当我将 xlsx 文件中的时间数据读入 pandas 时,它读取为十进制值。
示例:9:23:27 AM
读取为 .391284722
我可以通过使用格式单元格将其转换为时间并选择时间来修复它。但我更喜欢自始至终使用 pandas,而不是 Excel。
当我调用该值并将其转换为日期时间对象时
df.TIME=pd.to_datetime(df.TIME)
更改为此日期1970-01-01
所需时间是9:23:27 AM
非常感谢任何帮助。 谢谢
最佳答案
演示:
将该列读取为字符串:
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
更新:为了转换从 Excel 读取的 float (秒数) 请尝试以下操作:
来源 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
关于Python Pandas 将时间读取为十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47872835/