使用python为选定的数据帧单元格设置值

使用python为选定的数据帧单元格设置值,python,pandas,Python,Pandas,我有两个python数据帧,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

我有两个python数据帧,
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              
我试图做的是每当
df2.datetime
晚于相应的
df1.datetime时,将
df1['events']
中的事件字符串附加到
df2['History']
。例如,我希望
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()] 
但是得到了错误消息

指向“+=”的“无效语法”(当我将“+=”替换为“=”时出现相同的错误消息)


您可以帮助吗?Thx.

您可以使用
cumsum
计算事件,直到
df1
上的一行,然后使用将
df1
中的最新日期映射到
df2
中的相应日期:

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;

谢谢你的评论。但是,在我的例子中,df1.datetime不同于df2.datetime。上面给出的df1和df2被简化了。实际上,df2中有多行的datetime位于df1的下两行之间。因此这两行可能不容易合并。如果df2中有多行位于df1中的两行之间,那么它们将得到相同的值。这不是您所需要的吗?感谢您的解决方案,它工作得非常好。同时,是否可以让我知道我原来的解决方案中的错误?