【发布时间】:2019-07-31 12:44:51
【问题描述】:
我正在尝试将 .isin 与 ~ 一起使用,因此我可以根据 2 个数据集中的多列获取唯一行的列表。
所以,我有 2 个包含 9 行的数据集: df1 是底部,df2 是顶部(对不起,我无法让它在下面显示,它显示 1 然后是一行数字)
Index Serial Count Churn
1 9 5 0
2 8 6 0
3 10 2 1
4 7 4 2
5 7 9 2
6 10 2 2
7 2 9 1
8 9 8 3
9 4 3 5
Index Serial Count Churn
1 10 2 1
2 10 2 1
3 9 3 0
4 8 6 0
5 9 8 0
6 1 9 1
7 10 3 1
8 6 7 1
9 4 8 0
我想根据多于 1 列从 df1 中获取不在 df2 中的行列表。
例如,如果我基于列 Serial 和 Count 进行搜索,我不会从 df1 返回索引 1 和 2,因为它出现在 df2 中的索引位置 6,与 df1 中的索引位置 4 相同,因为它出现在df2 中的索引位置 2。这同样适用于 df1 中的索引位置 5,因为它位于 df2 中的索引位置 8。
流失列并不重要。
我可以让它工作,但仅基于 1 列,但不能超过 1 列。
df2[~df2.Serial.isin(df1.Serial.values)] 有点像我想要的,但只在 1 列上。我希望它基于 2 个或更多。
Index Serial Count Churn
3 9 3 0
6 1 9 1
7 10 3 1
8 6 7 1
9 4 8 0
【问题讨论】:
-
我有点困惑,您想要 df1 中不存在于 df2 中的行,但您的代码建议相反,df2 中不存在于 df1 中的行。跨度>
-
对不起,我没注意到。 TBH 无论如何它都可以,因为它只是意味着切换 df1 和 df2。更多的是如何让我正在寻找的查询工作。
-
是的,我相信您的编辑已经破坏了您的一个数据框,因为它们现在包含相同的值。
-
是的,很抱歉,它有,但我从未注意到它。我现在已经修好了。
标签: python isinstance