根据另一个数据框创建新的数据框

时间:2018-08-28 10:09:59

标签: python python-3.x pandas

我有这个数据帧DF1

emp_no  no_children  status
  1      3            3
  2      2            2
  23     5            5

和另一个DF2

emp_no  no_children  status
      1      3            3
      2      2            2
      3      5            5

我正在尝试基于DF1和DF2创建一个新的数据框

emp_no no_children status
  23     5         5

新DF应该在DF2中不包含emp_no

3 个答案:

答案 0 :(得分:2)

使用emp_no列的ne并使用df1数据帧的切片。

df1.loc[df1['emp_no'].ne(df2['emp_no']),:]

  emp_no    no_children status
2     23              5      5

答案 1 :(得分:1)

您可以将mergehow='left'indicator=True结合使用,然后过滤df1中存在的行。

In [277]: df1.merge(df2, indicator=True, how='left'
              ).query('_merge == "left_only"'
              ).drop('_merge', 1)
Out[277]:
   emp_no  no_children  status
2      23            5       5

详细信息

In [278]: df1.merge(df2, indicator=True, how='left')
Out[278]:
   emp_no  no_children  status     _merge
0       1            3       3       both
1       2            2       2       both
2      23            5       5  left_only

In [279]: df1.merge(df2, indicator=True, how='left').query('_merge == "left_only"')
Out[279]:
   emp_no  no_children  status     _merge
2      23            5       5  left_only

答案 2 :(得分:0)

这将给出df1行,其中df2 ['emp_no']中找不到df1 ['emp_no'](〜为负):

df1.loc[~df1['emp_no'].isin(df2['emp_no'])]