如何比较两个熊猫数据框行并返回值?

时间:2019-11-13 10:02:38

标签: python pandas dataframe

我有2个pandas数据框,例如  第一数据农场

 index  a   b   c   d
   0    4   5   3   2
   1    1   10  21  34
   2    3   32  1   45
   3    56  42  42  23

第二个数据框

index   a  b  c  d
  LL    2  2  2  1
  UL    42 2  1  8

我想要这样的例外输出。

 index  a   b   c   d   result
   0    4   5   3   2    [5,3]
   1    1   10  21  34   [1,10,21,34]
   2    3   32  1   45   [32,1,45]
   3    56  42  42  23   [56,42,42,23]

在此,我将第二个数据帧行与第一个数据帧行进行比较。条件是,如果第一个数据帧的值小于第二个数据帧的LL行,它将被添加到结果列中;如果第一个数据帧的值大于第二个数据帧的UL行,它将被添加到结果列中。

1 个答案:

答案 0 :(得分:1)

您可以做到


cond = (first_df<second_df.loc['LL',:]) | (first_df>second_df.loc['UL',:])
first_df['result'] = first_df[cond].apply(lambda x : list(x.dropna()), axis=1)

假设index是两个数据框中的索引,如果不是,则可以这样做

first_df.set_index('index', inplace=True)
second_df.set_index('index', inplace=True)
    a   b   c   d   result
index                   
0   4   5   3   2   [5.0, 3.0]
1   1   10  21  34  [1.0, 10.0, 21.0, 34.0]
2   3   32  1   45  [32.0, 1.0, 45.0]
3   56  42  42  23  [56.0, 42.0, 42.0, 23.0]