首页 > 解决方案 > 使用 pandas 数据框列中的值更改 DateTime 对象的日期

问题描述

假设我有一个包含 10,000 多行的数据框,Day其中Month包含Month一个日期时间对象。对象中“day”的值Month不正确,因此我想用Day列中的相应值替换它。我该怎么做呢?

import datetime as dt

df = pd.DataFrame({
'Month': [dt.date(2017,9,1),dt.date(2017,11,1),dt.date(2017,9,1)],
'Day': [7, 21,14],
})

Day Month
7   2017-09-01
21  2017-11-01
14  2017-09-01

所以我希望最终结果看起来像这样:

Day Month       New_Col
7   2017-09-01  2017-09-07
21  2017-11-01  2017-11-21
14  2017-09-01  2017-09-14

标签: pythonpandasdatetimedataframe

解决方案


将列转换Month为日期时间to_datetime并添加列Day转换to_timedelta的 s:

df['New_Col'] = pd.to_datetime(df['Month']) + pd.to_timedelta(df['Day'], unit='d')
print (df)
        Month  Day    New_Col
0  2017-09-01    7 2017-09-08
1  2017-11-01   21 2017-11-22
2  2017-09-01   14 2017-09-15

如果需要减去一天:

df['New_Col'] = pd.to_datetime(df['Month']) + pd.to_timedelta(df['Day'] - 1, unit='d')
print (df)
        Month  Day    New_Col
0  2017-09-01    7 2017-09-07
1  2017-11-01   21 2017-11-21
2  2017-09-01   14 2017-09-14

推荐阅读