【发布时间】:2019-08-17 02:54:40
【问题描述】:
为此,我查看了所有互联网和 pandas 文档。
我有 2 个 pandas 数据帧(带有字符串值) 它们实际上有 14 列和 1667 行。
我需要比较它们并返回一个或多个较长的值而不是较短的值
df1
0 X
1 Y
2 Z
df2
0 X
1 Y
结果:
df_diff
2 Z
我尝试了不同的合并和连接,也许我只是愚蠢,但无法使其工作。 这是比较 2 个数据帧并返回新数据帧中所有不相等行的函数的一部分。 如果您有整个功能的解决方案,请随时将其发布为答案。
【问题讨论】:
-
反合并不起作用
-
你是如何使用它的?你需要一个简单的
isin -
isin 不工作仅仅是因为我有多个列 (14) ,我可能也可以使用 unique 代替 isin 但同样对多列没有意义(抱歉上面的例子不清楚),我的主要问题是我需要知道每行的 14 列中的哪些值不同以及它在哪里。 Isin 只会告诉我值“a”是否在 DataFrame 中。我已经尝试过 isin,因为我发现了“反合并”和类似的问题。它不成功。
-
也许我只是不清楚:我有 2 个 14 列和 1667 行的表。我需要编写一个脚本,逐行比较它们,以检查每列的哪一行中的值不同。这是我必须匹配的用户管理表。因此,如果一个用户在 df1 和 df2 但在另一列中,它说启用而不是禁用,我必须知道那在哪里。或者,如果用户在 d1 和 d2 中,但在另一列“姓氏”中,他的姓氏拼写不同于 df1 到 df2,我也必须知道
-
我的另一个想法是使用 iterrows() 但我无法让它工作,下一个问题是表格不必等长(如果一个或多个用户是在一个表上丢失),所以我想我会写一个 if 语句来检查并根据它们是否相等长度来决定使用哪种方式......但再次无法在 2 个数据帧上使用 iterrows...... @yatu
标签: python python-3.x pandas dataframe