打印未包含在另一个数据框

时间:2017-05-10 20:51:30

标签: python pandas numpy

我有两个数据帧:

df1 = pd.DataFrame({'System':['b0001','b0002']})
df2 = pd.DataFrame({'System':['b0001']})

我想在df1列System中打印未包含在df2列System中的值。输出应该只是:

b0002

我目前的代码是:

for i in df1.index:
    if df1.System[i] not in df2.System:
        print (df1.System[i])

但输出是:

b0001 
b0002

我无法弄清楚为什么它仍打印出来b0001。我已尝试使用isin,输出结果相同。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

大熊猫这样做的方法是使用isin,如下所示:

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

输出:

  System
1  b0002

但是,要按照您的方式进行操作,您将遗失.values

for i in df1.index:
    if df1.System[i] not in df2.System.values:
        print (df1.System[i])

输出:

b0002

答案 1 :(得分:3)

numpy

np.setdiff1d(df1.System.values, df2.System.values)

array(['b0002'], dtype=object)

答案 2 :(得分:2)

lazy val otherProject = RootProject(file("../otherproject"))

lazy val rootProject = (project in file("."))
    // dependsOn allows the root project to use functions from
    .dependsOn(otherProject)
    // aggregation runs tasks of root project on aggregated projects as well
    .aggregate(otherProject)

答案 3 :(得分:0)

你可以使用套装

set(df1.system).difference(set(df2.system))