我有一个像这样的Pandas DataFrame:
Y M D h m s A B C
0 2017 10 17 0 0 0.0 2 -1.921937e-05 7.803138e-12
1 2017 10 17 0 0 0.0 2 -9.109295e-09 1.261762e-11
2 2017 10 17 0 0 0.0 2 -7.391985e-09 1.145216e-11
3 2017 10 17 0 0 0.0 2 -2.785207e-08 7.311125e-12
即。其中年,月,日,小时,分钟,秒在分隔列中为整数或浮点数。
我想知道更好/更快的方式来获得包含日期作为日期时间的Serie?
答案 0 :(得分:3)
选项1
手动连接列。
i = df.iloc[:, :6].astype(str)
j = ['Y'] + '-' + i['M'] + '-' + i['D'] + ' ' + i['h'] + ':' + i['m'] + ':' + i['s']
pd.to_datetime(j)
0 2017-10-17
1 2017-10-17
2 2017-10-17
3 2017-10-17
dtype: datetime64[ns]
选项2
必须为此归功于piR。这包括巧妙地重命名列并将数据帧切片传递给pd.to_datetime
。
m = dict(Y='year', M='month', D='day', h='hour', m='minute', s='second')
v = df.iloc[:, :6].rename(columns=m)
year month day hour minute second
0 2017 10 17 0 0 0.0
1 2017 10 17 0 0 0.0
2 2017 10 17 0 0 0.0
3 2017 10 17 0 0 0.0
pd.to_datetime(v)
0 2017-10-17
1 2017-10-17
2 2017-10-17
3 2017-10-17
dtype: datetime64[ns]