在Python中使用删除行!=操作员不工作

2024-09-29 20:18:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用以下方法删除数据集中的行:

totes = df3.loc[(df3['Reporting Date'] != '18/08/2017') & (df3['Business Line'] != 'Bondy')]

但是,这并不是我所期望的;我知道在使用以下命令之后,我要删除的行数是496:

totes = df3.loc[(df3['Reporting Date'] == '18/08/2017') & (df3['Business Line'] == 'Bondy')]

当我运行drop函数时,它返回的行数远远少于数据集减去496的行数。你知道吗

有人知道怎么解决这个问题吗?你知道吗


Tags: 数据方法函数命令datelinebusinessloc
1条回答
网友
1楼 · 发布于 2024-09-29 20:18:23

使用&是正确的,但它被误用了。这是一个逻辑问题。注:

(NOT X) AND (NOT Y) != NOT(X AND Y)

相反,可以通过~运算符计算布尔条件的负值:

totes = df3.loc[~((df3['Reporting Date'] == '18/08/2017') & (df3['Business Line'] == 'Bondy'))]

这些括号和遮罩会让人困惑,所以你可以写得更清楚:

m1 = df3['Reporting Date'].eq('18/08/2017')
m2 = df3['Business Line'].eq('Bondy')

totes = df3.loc[~(m1 & m2)]

或者,请注意:

NOT(X & Y) == NOT(X) | NOT(Y)

因此您可以使用:

m1 = df3['Reporting Date'].ne('18/08/2017')
m2 = df3['Business Line'].ne('Bondy')

totes = df3.loc[m1 | m2]

相关问题 更多 >

    热门问题