我有两个python pandas数据框df1
和df2
,当我尝试将某些值从df2
传递到df1
时遇到了问题。
df1
如下
Datetime Events
2009-06-25 AAA;
2009-09-29 BBB;
2009-10-20 CCC;
df2
如下
Datetime History
2009-07-25
2009-09-30
2009-10-21
我尝试做的是在df1['Events']
晚于相应的df2['History']
时将df2.datetime
中的事件字符串附加到df1.datetime
。 E. g。,我希望df2
成为
Datetime History
2009-07-25 AAA;
2009-09-30 AAA; BBB;
2009-10-21 AAA; BBB; CCC;
我尝试了以下理解:
[df2[df2['Datetime']>time['Datetime']].loc['History']+=time['Events'] for idx, time in df1.iterrows()]
但错误消息
你能帮忙吗?谢谢。'语法无效'指着' + =' (即使我更换了' + ='' ='也是同样的错误信息。
答案 0 :(得分:1)
您可以使用cumsum
计算df1
上一行中的事件,然后使用merge_asof
将df1
中的最新日期映射到df2
中的相应日期{1}}:
df1.Datetime = pd.to_datetime(df1.Datetime)
df2.Datetime = pd.to_datetime(df2.Datetime)
df1.Events = df1.Events.cumsum()
pd.merge_asof(df2, df1, on="Datetime").rename(columns={"Events": "History"})
# Datetime History
#0 2009-07-25 AAA;
#1 2009-09-30 AAA;BBB;
#2 2009-10-21 AAA;BBB;CCC;