使用Pandas DataFrame列中的值更改DateTime对象的日期

时间:2019-02-09 18:27:15

标签: python pandas datetime dataframe

说我有一个10,000+行的数据帧,其中有DayMonth列,其中Month是一个日期时间对象。 Month对象中“ day”的值不正确,因此我想用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

1 个答案:

答案 0 :(得分:2)

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

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