Python 查找所有负数

Python 查找所有负数,python,pandas,Python,Pandas,我的数据框如下所示: Person Number BOB 1.23 BOB -1.23 Jeff 18.01 Jack 82.04 Jack 14.02 Jeff -18.01 我想做的是查看Persons列,然后说如果有多个人的名字是BOB,我们知道BOB是唯一的,所以是同一个人。然后我想看看数字列,如果它们是BOB的负值和正值,我想将这两个数字都改为零。此外,对于像杰克这样有两个正数的情况,我不想为他做任何事。所

我的数据框如下所示:

Person    Number
 BOB       1.23
 BOB      -1.23
 Jeff      18.01
 Jack      82.04
 Jack      14.02
 Jeff     -18.01
我想做的是查看Persons列,然后说如果有多个人的名字是BOB,我们知道BOB是唯一的,所以是同一个人。然后我想看看数字列,如果它们是BOB的负值和正值,我想将这两个数字都改为零。此外,对于像杰克这样有两个正数的情况,我不想为他做任何事。所以我想做的就是找出这个人在哪里是同一个人,如果他们的名字下有一个负值和一个正值,那么把这两个数字都改为0

所以最后的数据帧看起来像这样

Person    Number
 BOB       0
 BOB       0
 Jeff      0
 Jack      82.04
 Jack      14.02
 Jeff      0

我遇到的另一个问题是Python没有正确地检测负片,因此它将负片更改为$4.00,而不是将其保持为-1.23。我只是不知道如何才能得到指定的答案,因此非常感谢您的帮助,谢谢您

您可以找到那些有正值、负值的人,然后是交点

pos = set(df.loc[df.Number > 0, 'Person'])
neg = set(df.loc[df.Number < 0, 'Person'])
intersection = pos & neg
df.loc[df.Person.isin(intersection), 'Number'] = 0

df
    Person  Number
0   BOB     0.00
1   BOB     0.00
2   Jeff    0.00
3   Jack    82.04
4   Jack    14.02
5   Jeff    0.00
请注意,输出与您发布的预期输出不同,但在我看来,您所要求的与预期输出之间似乎存在一些矛盾。我赞同:

所以我想做的就是找出这个人在哪里是同一个人,如果他们的名字下有一个负值和一个正值,那么把这两个数字都改为0


您可以找到具有正值、负值和交点的人

pos = set(df.loc[df.Number > 0, 'Person'])
neg = set(df.loc[df.Number < 0, 'Person'])
intersection = pos & neg
df.loc[df.Person.isin(intersection), 'Number'] = 0

df
    Person  Number
0   BOB     0.00
1   BOB     0.00
2   Jeff    0.00
3   Jack    82.04
4   Jack    14.02
5   Jeff    0.00
请注意,输出与您发布的预期输出不同,但在我看来,您所要求的与预期输出之间似乎存在一些矛盾。我赞同:

所以我想做的就是找出这个人在哪里是同一个人,如果他们的名字下有一个负值和一个正值,那么把这两个数字都改为0

让我们使用filter和.loc来实现它

或者使用isin

让我们使用filter和.loc来实现它

或者使用isin


请讲一讲。我从未见过Python将负面符号显示为美元符号。杰夫和鲍勃有着相同的用例,但输出是不同的。你能看一下数据吗?我只是看了看,它不再像数据框中那样显示它们了,所以负货币值看起来像-$21.00,我真的不在乎名字是什么,我只想看看这个人是否有相同的名字,然后看看他们是否有,然后看看数字,他们的名字是负数还是正数如果数字中的数量相同,则将两个值都更改为0。请给出一个值。我从未见过Python将负面符号显示为美元符号。杰夫和鲍勃有着相同的用例,但输出是不同的。你能看一下数据吗?我只是看了看,它不再像数据框中那样显示它们了,所以负货币值看起来像-$21.00,我真的不在乎名字是什么,我只想看看这个人是否有相同的名字,然后看看他们是否有,然后看看数字,他们的名字是负数还是正数如果数值相同,则将两个值都更改为0