说我有一个10,000+行的数据帧,其中有Day
和Month
列,其中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
答案 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