如何将Python DataFrame
的内容解析为一个新列,其中包含现有列作为一个datetime
对象?
出于时间性能的原因,我想避免for循环(如果可能的话,也要避免使用lambda)。
import pandas as pd
df = pd.DataFrame({"century": [20, 20, 20], "my_date": [180105, 180106, 180107],
"my_time": ["17:01", "17:02", "17:03"]})
。
century my_date my_time
0 20 180105 17:01
1 20 180106 17:02
2 20 180107 17:03
答案 0 :(得分:2)
将to_datetime
与所有列结合使用,并按http://strftime.org/
设置格式以提高性能:
df['date'] = pd.to_datetime(df['century'].astype(str) +
df['my_date'].astype(str) +
df['my_time'], format='%Y%m%d%H:%M')
print (df)
century my_date my_time date
0 20 180105 17:01 2018-01-05 17:01:00
1 20 180106 17:02 2018-01-06 17:02:00
2 20 180107 17:03 2018-01-07 17:03:00
答案 1 :(得分:1)
您可以创建熊猫友好格式的一系列字符串。然后输入pd.to_datetime
。
df = pd.DataFrame({"century": [20, 20, 20], "my_date": [180105, 180106, 180107],
"my_time": ["17:01", "17:02", "17:03"]})
date_str = (df['century']*10**6 + df['my_date']).astype(str) + ' ' + df['my_time']
df['dt'] = pd.to_datetime(date_str)
print(df)
century my_date my_time dt
0 20 180105 17:01 2018-01-05 17:01:00
1 20 180106 17:02 2018-01-06 17:02:00
2 20 180107 17:03 2018-01-07 17:03:00