下面给出了两个数据框:
DF1
Start Date End Date
0 20110706 20110803
1 20110803 20110907
DF2
DATE 50 51 52 53 54
0 20110706 3.51 2.51 1.51 0.51 0
1 20110801 10.98 9.98 8.98 7.98 6.98
2 20110808 9.45 8.45 7.45 6.45 5.45
3 20110906 0 1 23.2 0 1.2
基于df1,我如何修改df2,以便根据日期在df1开始日期(包括左侧)内的范围求和列。
修改后的df2日期包含在内(。开头日期和结束日期范围包含在df中)
Start Date End Date 50 51 52 53 54
0 20110706 20110803 14.49 12.49 10.49 8.49 6.98
1 20110803 20110907 9.45 9.45 30.65 6.45 6.65
如何实现这一目标?
答案 0 :(得分:1)
由于日期在Start Date
和End Date
中重复,因此不清楚df2
中的日期与开始或结束时的日期完全相同;它是包容性的还是包含在内的。假设它是包容性的,你可以做
df1['Start Date'] = pd.DatetimeIndex(df1['Start Date'])
df1.set_index('Start Date', inplace=True)
df2['DATE'] = pd.to_datetime(df2.DATE)
df2.set_index('DATE', inplace=True)
sums = df2.groupby(df1.index.asof).sum()
pd.concat([df1, sums], axis=1)