当我将时间数据从xlsx文件读取到pandas中时。它以十进制值的形式读取
示例:上午9:23:27读取为.391284722我可以通过使用格式化单元格和选择时间将其转换为时间来修复它。但我更喜欢使用熊猫,而不是excel。
当我调用该值并将其转换为date time object df.TIME=pd.to_datetime(df.TIME)
更改为此日期1970-01-01所需时间为上午9:23:27
任何帮助都是非常感谢的。谢谢
发布于 2017-12-19 01:11:07
演示:
将该列作为字符串读取:
df = pd.read_excel(filename, dtype={'col_name':str})
In [51]: df
Out[51]:
time
0 9:23:27 AM
1 12:59:59 AM
In [52]: df['time2'] = pd.to_timedelta(df['time'])
In [53]: df
Out[53]:
time time2
0 9:23:27 AM 09:23:27
1 12:59:59 AM 12:59:59
In [54]: df.dtypes
Out[54]:
time object
time2 timedelta64[ns]
dtype: object
更新:要转换从读取的浮点数(秒数),请尝试以下操作:
源DF:
In [85]: df
Out[85]:
time
0 0.391285
1 0.391285
2 0.391285
解决方案:
In [94]: df['time2'] = pd.to_timedelta((df['time'] * 86400).round(), unit='s')
In [95]: df
Out[95]:
time time2
0 0.391285 09:23:27
1 0.391285 09:23:27
2 0.391285 09:23:27
In [96]: df.dtypes
Out[96]:
time float64
time2 timedelta64[ns]
dtype: object
发布于 2017-12-19 00:59:56
这个问题可以用一些澄清来作为时间栏的最终目的。不过,出于一般目的,可以尝试在to_datetime
中使用format
关键字。
df.TIME=pd.to_datetime(df.TIME, format='%I:%M%S %p')
有关格式,请参阅此网站:http://strftime.org/
https://stackoverflow.com/questions/47872835
复制相似问题