gpt4 book ai didi

python - 特定行 Pandas 数据框的总和

转载 作者:行者123 更新时间:2023-12-05 08:49:02 24 4
gpt4 key购买 nike

我有一个数据框,想将特定行的总和添加到该数据框中。所以例如我有

df = pd.DataFrame({'prod':['a','a','a','b','b','b','c','c','c'], 'attribute':['x','y','z','x','y','z','x','y','z'],
'number1':[1,2,2,3,4,3,5,1,1], 'number2':[10,2,3,3,1,2,3,1,1], 'number3':[1,4,3,5,7,1,3,0,1]})

如何为每个产品 a、b 和 c 添加属性 y 和 z 的数字 1/2/3 的总和作为新行?所以它看起来像这样

    prod    attribute   number1 number2 number3
0 a x 1 10 1
1 a y 2 2 4
2 a z 2 3 3
3 a sum_yz 4 5 7
4 b x 3 3 5
5 b y 4 1 7
6 b z 3 2 1
7 b sum_yz 7 3 8
8 c x 5 3 3
9 c y 1 1 0
10 c z 1 1 1
11 c sum_yz 2 2 1

最佳答案

您需要使用条件 groupby 进行 concat

您可以使用 isin 过滤数据框并使用 assign 添加新列。

首先让我们选择要求和的目标列。

cols = [col for col in df.columns if 'number' in col]

df1 = pd.concat(
[
df,
df[df["attribute"].isin(["y", "z"])]
.groupby("prod")[cols]
.sum()
.assign(attribute="sum_yz")
.reset_index(),
]
).sort_values("prod")


print(df1)

prod attribute number1 number2 number3
0 a x 1 10 1
1 a y 2 2 4
2 a z 2 3 3
0 a sum_yz 4 5 7
3 b x 3 3 5
4 b y 4 1 7
5 b z 3 2 1
1 b sum_yz 7 3 8
6 c x 5 3 3
7 c y 1 1 0
8 c z 1 1 1
2 c sum_yz 2 2 1

关于python - 特定行 Pandas 数据框的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65178983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com