为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫会得到其他数据中没有的行

熊猫会得到其他数据中没有的行

烙印99 2019-07-05 13:33:14
熊猫会得到其他数据中没有的行我有两个熊猫数据框架,它们有一些共同的行。假设dataframe 2是dataframe 1的子集。如何获得不在dataframe 2中的dataframe 1行?df1 = pandas.DataFrame(data = {'col1' : [1, 2, 3, 4, 5], 'col2' : [10, 11, 12, 13, 14]})  df2 = pandas.DataFrame(data = {'col1' : [1, 2, 3], 'col2' : [10, 11, 12]})
查看完整描述

3 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

一种方法是存储两个DFS内部合并表单的结果,然后当一个列的值不在此公共值时,我们可以简单地选择行:

In [119]:common = df1.merge(df2,on=['col1','col2'])print(common)df1[(~df1.col1.isin(common.col1))&(~df1.col2.isin(common.col2))]
   col1  col20     1    101     2    112     3    12Out[119]:
   col1  col23     4    134     5    14

编辑

您发现的另一个方法是使用isin会产生NaN可以删除的行:

In [138]:df1[~df1.isin(df2)].dropna()Out[138]:
   col1  col23     4    134     5    14

但是,如果df2不以相同的方式启动行,则这将无法工作:

df2 = pd.DataFrame(data = {'col1' : [2, 3,4], 'col2' : [11, 12,13]})

将产生整个DF:

In [140]:df1[~df1.isin(df2)].dropna()Out[140]:
   col1  col20     1    101     2    112     3    123     4    134     5    14


查看完整回答
反对 回复 2019-07-05
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

假设索引在dataframes中是一致的(不考虑实际的coll值):

df1[~df1.index.isin(df2.index)]


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 401 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信