Создать новый фрейм данных на основе другого фрейма данных - PullRequest
0 голосов
/ 28 августа 2018

У меня есть этот фрейм данных 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 должен содержать emp_no, а не в DF2

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Использование ne столбца emp_no и использование фрагмента df1 кадра данных.

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

  emp_no    no_children status
2     23              5      5
0 голосов
/ 28 августа 2018

Это даст строки df1, где df1 ['emp_no'] не может быть найден (~ является отрицательным) в df2 ['emp_no']:

df1.loc[~df1['emp_no'].isin(df2['emp_no'])]
0 голосов
/ 28 августа 2018

Вы можете использовать merge с how='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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...