基于列值合并多个数据框

时间:2020-05-21 14:38:14

标签: python pandas numpy

我有一个数据框df1

symbol  date        .    .    .     close   .     1d     2d      3d      5d   10d   20d
a     01/02/20120.  .    .    .      100    .     2      2.5    4.1     1.9   4.65  9.12
a     01/02/20120.  .    .    .      60     .     1.1    2.3    2.1     4.9   3.62  7.10
.
.
.
ab    01/02/20120.  .    .    .      55     .    8      2.15   7.8     1.9   4.65  9.12
ab    01/02/20120.  .    .    .      22     .    4.4    2.5    1.1     1.9   4.65  9.12
.
.

ac    01/02/20120.  .    .    .      67     .    2      2.5.   4.1     1.9   4.65  9.12
.
.
.

和数据帧df2

symbol  .   .   .   .   release_date    release_time    .   .    .   .  .   . 
a       .   .   .   .   01/02/20120       a             .   .    .   .  .   .
a       .   .   .   .   01/05/20120       b             .   .    .   .  .   .
a       .   .   .   .   01/09/20120       a             .   .    .   .  .   .
a       .   .   .   .   01/011/2020       b             .   .    .   .  .   .
ab      .   .   .   .   01/02/20120       a             .   .    .   .  .   .
ab      .   .   .   .   01/05/20120       a             .   .    .   .  .   .
ac      .   .   .   .   01/18/20120       a             .   .    .   .  .   .
ad      .   .   .   .   01/20/20120       b             .   .    .   .  .   .

我要向df2添加新列,以使

如果release_time = a,则在df1中搜索与df2具有相同release_date的条目,并添加列close1d2d3d,{{1} },5d10d。我不希望df1中的其他列成为数据框的一部分,并同时保留df2中的所有列。

如果release_time = b,则在此日期之前关闭值,如果不存在,我想在该列中添加NA

预期输出:

20d

我尝试使用

symbol  .   .   .   .   release_date    release_time    .   .    .   .  .   .  close   1d  2d  3d  5d  10d  20d 
a       .   .   .   .   01/02/20120       a             .   .    .   .  .   .   
a       .   .   .   .   01/05/20120       b             .   .    .   .  .   .
a       .   .   .   .   01/09/20120       a             .   .    .   .  .   .
a       .   .   .   .   01/011/2020       b             .   .    .   .  .   .
ab      .   .   .   .   01/02/20120       a             .   .    .   .  .   .
ab      .   .   .   .   01/05/20120       a             .   .    .   .  .   .
ac      .   .   .   .   01/18/20120       a             .   .    .   .  .   .
ad      .   .   .   .   01/20/20120       b             .   .    .   .  .   .

这为我提供了在df2中合并的数据,我不确定如何为release_time = a或b添加过滤器。

有人可以帮我吗

更新-这是数据框外观的链接:Google Sheet link

谢谢

1 个答案:

答案 0 :(得分:0)

不确定我了解您要做什么,但是要为日期做过滤器,而不是将整个数据框传递给merge()函数,您应该传递类似df[ df['release_date'] == a]

的内容