Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 阅读时间_Python_Pandas_Time - Fatal编程技术网

Python 阅读时间

Python 阅读时间,python,pandas,time,Python,Pandas,Time,当我将xlsx文件中的时间数据读入熊猫时。 它读取为十进制值 示例:上午9:23:27读作.391284722 我可以通过使用格式单元格将其转换为时间并选择时间来修复它。 但我更喜欢一直使用熊猫,而不是excel 当我调用该值并将其转换为日期时间对象时 df.TIME=pd.to_datetimedf.TIME 更改为1970年1月1日 所需时间为上午9:23:27 非常感谢您的帮助。 谢谢你时间专栏的最后一个目的是澄清这个问题。但出于一般目的,请尝试在to_datetime中使用format关

当我将xlsx文件中的时间数据读入熊猫时。 它读取为十进制值

示例:上午9:23:27读作.391284722 我可以通过使用格式单元格将其转换为时间并选择时间来修复它。 但我更喜欢一直使用熊猫,而不是excel

当我调用该值并将其转换为日期时间对象时 df.TIME=pd.to_datetimedf.TIME

更改为1970年1月1日 所需时间为上午9:23:27

非常感谢您的帮助。
谢谢你

时间专栏的最后一个目的是澄清这个问题。但出于一般目的,请尝试在to_datetime中使用format关键字

查看此网站了解格式:

演示:

将该列读取为字符串:

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读取的浮点秒数 请尝试以下操作:

资料来源:

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

pandas.to_datetime有一个隐式推理系统,其中需要一个显式的年/月/日戳。如果没有收到,它会将时间转换为从1970-01-01开始的datetime对象。你想用时间列来完成什么?我想准确地读取时间的编码,它应该读为9.23.27,而不是读为.391284722…时间列中没有日期…只涉及时间。当我读取时间时,它会将时间转换为十进制值。嗨,Max,当它将时间读取为十进制值而不是9:23:27时,部分读取是问题所在。…@pythonnija,您是否使用了dtype={'column_name':str}?是的。。它读取更长的字符串0.39、12847、2222、2222、2、谢谢马克斯,更新的答案解决了问题。@ Python njina,很高兴它有帮助:如果你认为它已经回答了你的问题,请考虑一个答案。
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