DataFrame 返回数据帧的切片,其中列值等于基于数据帧列的某个值,否则为 0 [重复]

问题描述 投票:0回答:1

我有一个如下所示的数据框

df = pd.DataFrame({'testid':(1,2,1,2,1,2),'Name':('apple','apple','melon','melon','orange','orange'), 'A': (1,2,10,20,5,5), 'B': (1,5,4,2,3,1)})
睾丸 姓名 A B
1 苹果 1 1
2 苹果 2 5
1 甜瓜 10 4
2 甜瓜 20 2
1 橙色 5 3
2 橙色 5 1

我想为每个 testid 以及 A 列和 B 列返回该数据帧的一个切片(仍然是一个数据帧),如果相应的 apple 值大于 1,则返回相应的 melon 值,否则返回 0。 基本上我想得到一个像这样的DataFrame

睾丸 A B
1 0 0
2 20 2

如何实现这一目标?我尝试使用 lambda x: 进行 apply() ,但没有找到将数据框列放入 lambda 函数的方法。

python dataframe lambda
1个回答
0
投票

我相信这对你应该有用。根据

melon
对应的值替换
apple
对应的值。

p = df.groupby(['testid','Name']).sum()
p.xs('melon', level=1).where(p.xs('apple', level=1)>1, 0).reset_index()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.