gpt4 book ai didi

python - 比较两个数据框时出错,列名相同

转载 作者:行者123 更新时间:2023-12-01 06:56:52 28 4
gpt4 key购买 nike

我有两个数据帧,我正在尝试比较这两个数据帧,因此如果 df1 的值在 df 中,则删除该行。我已经列出了这两列,它们的名称完全相同。

df   Permit Number  Sub Permit   
BLD-00045 NaN
ELE-2019 BLD-00045
PLM-2018 BLD-00045
df1  Permit Number    Sub Permit    
BLD-00001 NaN
ELE-2019 BLD-00045
PLM-7777 BLD-00045

在下面的代码中,我重命名了另一个数据帧 (df3) 中的列,以便我可以将它们合并到新的数据帧 (df1) 中。我尝试将索引设置为许可值,但不希望删除索引(因为我想保留许可编号),然后比较它们。

我的目标是保留行 BLD-00045 和 PLM-2018,但删除 ELE-2019,因为它在两个数据帧之间相等。

df3.rename(columns={'permit_num': "Permit Number"}, inplace=True)
df1 = pd.merge(df, df3, on='Permit Number')
df.set_index('Permit Number', inplace=False)
df1.set_index('Permit Number', inplace=False)
df = df.loc[df['Permit Number'] != df1['Permit Number']]
print(df)

我不断收到 ValueError:只能比较相同标签的 Series 对象。

最佳答案

一种方法是使用 isin~ 来反转逻辑,

例如:

print(df.loc[df['Permit Number'].isin(df1['Permit Number'])])
Permit Number Sub Permit
1 ELE-2019 BLD-00045

如果我正确理解你的逻辑,你想删除上面的行 ^

print(df.loc[~df['Permit Number'].isin(df1['Permit Number'])])

您可以通过添加 ~ 来实现此目的,这会反转逻辑或充当 not isin

      Permit Number Sub Permit
0 BLD-00045 NaN
2 PLM-2018 BLD-00045

关于python - 比较两个数据框时出错,列名相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58774766/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com