【问题标题】:Python pandas get rows from left table and from right table missing in left tablePython pandas从左表和右表中获取左表中缺少的行
【发布时间】:2018-09-05 07:32:34
【问题描述】:

我有左表和右表,我需要以这种方式合并两者的 FileStamp 值:从左表和右表中取出左表中缺少的所有值,按“日期”加入:

import pandas as pd
left = pd.DataFrame({'FileStamp': ['T101', 'T102', 'T103', 'T104'], 'date': [20180101, 20180102, 20180103, 20180104]})
right = pd.DataFrame({'FileStamp': ['T501', 'T502'], 'date': [20180104, 20180105]})

类似

result = pd.merge(left, right, how='outer', on='date')

但“外部”不是个好主意。

想要的输出应该是这样的

     FileStamp_x      date      FileStamp_y
0        T101       20180101         NaN
1        T102       20180102         NaN
2        T103       20180103         NaN
3        T104       20180104         NaN
4         NaN       20180105        T502

有没有什么简单的方法可以达到想要的输出?

【问题讨论】:

    标签: python python-3.x python-2.7 pandas


    【解决方案1】:

    merge 之前使用isin 过滤:

    r = right[~right['date'].isin(left['date'])]
    print (r)
      FileStamp      date
    1      T502  20180105
    
    result = pd.merge(left, r, how='outer', on='date')
    print (result)
      FileStamp_x      date FileStamp_y
    0        T101  20180101         NaN
    1        T102  20180102         NaN
    2        T103  20180103         NaN
    3        T104  20180104         NaN
    4         NaN  20180105        T502
    

    【讨论】:

      【解决方案2】:

      merge后面的值可以调整:

      result = pd.merge(left, right, how='outer', on='date')
      result['FileStamp_y'] = np.where(result['FileStamp_x'].isnull(), result['FileStamp_y'], np.nan)
      

      结果:

          FileStamp_x     date  FileStamp_y
      0          T101 20180101          NaN
      1          T102 20180102          NaN
      2          T103 20180103          NaN
      3          T104 20180104          NaN
      4           NaN 20180105         T502
      

      【讨论】:

        猜你喜欢
        • 2019-05-09
        • 2020-12-10
        • 1970-01-01
        • 2016-11-14
        • 1970-01-01
        • 2022-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多