pandas Python过滤掉panda行相等性的错误结果

wj8zmpe1  于 2022-12-09  发布在  Python
关注(0)|答案(1)|浏览(86)

背景
我有两个结构完全相同的 Dataframe ,即行和列的编号沿着列名。

示例

我试图用下面的方法反复比较它们,只突出它们的区别。

df1 = pd.DataFrame({'Name': ['Adam','Sara','John'], 'Age': [22, 25, 20], 'City':['New York','',None]})
df2 = pd.DataFrame({'Name': ['Adam','Sara','John'], 'Age': [22, 19, 20], 'City':['New York',None,'New Mexico']})

我可以做这样的比较,但是我不能限制等式只返回False结果。

df1.loc[1].fillna('') == df2.loc[1].fillna('') 

Name     True
Age     False
City     True
Name: 1, dtype: bool

我打算把它迭代地插入到一个循环中,突出显示False的两个值会很好。

for i in range(1,df1.shape[0]):
    df1.loc[i].fillna('') == df2.loc[i].fillna('')
4jb9z9bj

4jb9z9bj1#

您必须过滤掉比较所创建的布尔序列:

equality_series = df1.loc[1].fillna('') == df2.loc[1].fillna('')
equality_series[~equality_series]

输出量:

Age    False
Name: 1, dtype: bool

相关问题