打印dataframe中未包含在另一个datafram中的列的值

2024-10-01 19:20:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧:

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

我想打印df1列系统中的值,该值不包含在df2列系统中。输出应仅为:

b0002

我现在的代码是:

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

但结果是:

b0001 
b0002

我不明白为什么它仍然打印出来。我试过isin,结果是一样的。你知道吗

任何帮助都将不胜感激。你知道吗


Tags: 数据代码indataframeforindexif系统
3条回答

一种方法是使用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
# This solution only prints unique elements in df1 which are not in df2

np.setdiff1d(df1,df2)
Out[236]: array(['b0002'], dtype=object)

numpy

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

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

相关问题 更多 >

    热门问题