2017-06-15 45 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()

我希望这有帮助。