2017-06-15 46 views
-1

我有一個由兩列組成的'時間'和'值'的熊貓數據框。如何避免大熊貓柱子類型的變化?

>>> df 
Empty DataFrame 
Columns: [Time, Value] 
Index: [] 

>>> df.Time = pd.to_timedelta(df.Time) 

>>> df.Value = df.Value.astype(float) 

>>> df.Value 
Series([], Name: Value, dtype: float64) 

>>> df.Time 
Series([], Name: Time, dtype: timedelta64[ns]) 

我想要做的是把字符串數據,我收到實時,入數據幀,到數據幀不改變列的類型。但是,每當我將數據放入數據框時,它們的類型都會變爲對象。

>>> data0 = '08:29:01.37543, 90.58' 

>>> data0 
'08:29:01.37543, 90.58' 

>>> df.loc[0] = data0.split(',') 

>>> df 
      Time Value 
0 08:29:01.37543 90.58 

>>> df.Time 
0 08:29:01.37543 
Name: Time, dtype: object  <--- Its type has been changed! 

>>> df.Value 
0  90.58 
Name: Value, dtype: object  <--- Its type has been changed! 

即使在添加新行後,我如何保持其類型?

+2

不要將字符串放入數據框。把浮標和timedeltas放進去。 – user2357112

+1

你問「爲什麼」或「如何避免它」?標題和問題主體在這方面似乎有所不同。 – MSeifert

+2

一位男士告訴他的醫生:「當我這樣做時會感到痛苦」。醫生說「不要那樣做」。 – piRSquared

回答

0

>>> df.loc[0] = data0.split(',')這一步後,

你必須
>>>df.Time = pd.to_timedelta(df.Time)df.Value = df.Value.astype(float)

改變類型,因爲你不能插入字符串作爲浮點類型,以便更好的辦法是插入數據,因爲它是字符串,然後改變使用類型astype()

我希望這有幫助。