使用python设置所选数据框单元格的值

时间:2017-06-29 13:18:15

标签: python pandas

我有两个python pandas数据框df1df2,当我尝试将某些值从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()] 

但错误消息

  

'语法无效'指着' + =' (即使我更换了' + ='' ='也是同样的错误信息。

你能帮忙吗?谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用cumsum计算df1上一行中的事件,然后使用merge_asofdf1中的最新日期映射到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;