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