猿问

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

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

我有两个熊猫数据框架,它们有一些共同的行。

假设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]})


烙印99
浏览 402回答 3
3回答

侃侃尔雅

一种方法是存储两个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

叮当猫咪

假设索引在dataframes中是一致的(不考虑实际的coll值):df1[~df1.index.isin(df2.index)]
随时随地看视频慕课网APP

相关分类

Python
我要回答