如何在pandas中使用groupby后应用条件

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

我有一个关于熊猫的问题,

我有以下代码按州分组并对字符串“Measure name”中包含单词“Death”的行数求和,

state_grp = df.groupby(['State'])
state_grp['Measure name'].apply(lambda x: x.str.contains('Death').sum())

结果

状态 总和
AK 123
直流电 24

但在获得结果后,我想应用另一个关于州首字母缩略词的条件,例如,如果州包含字母 A,则将“总和”乘以 2。

最终结果:

状态 总和
AK 246
直流电 24

我再次尝试使用 .apply(lambda x: ..) 但没有得到我想要的,

我是 pandas 新手,我想了解如何做到这一点以用于学习目的。

python pandas dataframe group-by apply
1个回答
0
投票

分组/求和后,您可以使用

.str.contains()
创建布尔掩码,然后在
df.loc[]
中使用此掩码:

mask = df["State"].str.contains("A")
df.loc[mask, "Sum"] *= 2

print(df)

打印:

  State  Sum
0    AK  246
1    DC   24
© www.soinside.com 2019 - 2024. All rights reserved.