在Pandas中阅读CSV时,将数字转换为小时和分钟



我有CSV文件,其中第二列指示格式为HHMMSS的时间点。

ID;TIME
A;110500
B;090000
C;130200

这种情况给我提出了一些问题。

  1. Panda是否有用小时、分钟和秒表示时间点的数据格式,但没有天、月。。。?

  2. 如何将这些字段转换为这样的格式?

在Python上,我会遍历字段。但我确信熊猫有更有效的方法。

如果没有没有没有日期的日期格式,我可以在该时间点添加一个日-月-年日期。

这是MWE

import pandas
import io
csv = io.StringIO('ID;TIMEnA;110500nB;090000nC;130200')
df = pandas.read_csv(csv, sep=';')
print(df)

中的结果

ID    TIME
0  A  110500
1  B   90000
2  C  130200

但我想看到的是

ID    TIME
0  A  11:05:00
1  B   9:00:00
2  C  13:02:00

或者更好地缩短的秒数

ID    TIME
0  A  11:05
1  B   9:00
2  C  13:02

您可以像使用read_csv中的参数date_parsertime加速器

df = pandas.read_csv(csv, sep=';', 
parse_dates=[1], # need to know the position of the TIME column
date_parser=lambda x: pandas.to_datetime(x, format='%H%M%S').time)
print(df)
ID      TIME
0  A  11:05:00
1  B  09:00:00
2  C  13:02:00

但在阅读后再做可能是很好的

df = (pandas.read_csv(csv, sep=';')
.assign(TIME=lambda x: pandas.to_datetime(x['TIME'], format='%H%M%S').dt.time) 
#or lambda x: pandas.to_datetime(x['TIME'], format='%H%M%S').dt.strftime('%#H:%M')
)

最新更新