Toi*_*Toi 3 python indexing rows dataframe pandas
我有两个数据框,df1 和 df2。现在,df1 包含 6 条记录,df2 包含 4 条记录。我想从中找出无与伦比的记录。我尝试过,但出现错误,ValueError: Can only compare identically-labelled DataFrame objects我猜这是由于 df 的长度造成的,因为 df1 有 6 个,df2 有 4 个,但是我如何比较它们并获取不匹配的行?
代码
df1=
a b c
0 1 2 3
1 4 5 6
2 3 5 5
3 5 6 7
4 6 7 8
5 6 6 6
df2 =
a b c
0 3 5 5
1 5 6 7
2 6 7 8
3 6 6 6
index = (df != df2).any(axis=1)
df3 = df.loc[index]
Run Code Online (Sandbox Code Playgroud)
这使:
ValueError: Can only compare identically-labelled DataFrame objects
Run Code Online (Sandbox Code Playgroud)
预期输出:
a b c
0 1 2 3
1 4 5 6
Run Code Online (Sandbox Code Playgroud)
我知道错误是由于长度造成的,但是有什么方法可以比较两个数据帧并从中获取不匹配的记录吗?
使用df.mergewithindicator=True并选择除 之外的所有行both:
In [173]: df = df1.merge(df2, indicator=True, how='outer').query('_merge != "both"').drop('_merge', 1)
In [174]: df
Out[174]:
a b c
0 1 2 3
1 4 5 6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6401 次 |
| 最近记录: |