我有两个数据帧:
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
,输出结果相同。
任何帮助将不胜感激。
答案 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))