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

标签 python pandas sum row

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

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/

相关文章:

python - 如何使用数据 URI 方案显示来自 ndb 数据存储的图像(通过将数据传递到模板而不必发出另一个请求)

python - Viewset 'create' 在 Django Rest Framework 中自定义赋值

python - Scrapy:如何使用正则表达式跟踪页面上的多个链接

python - 如何删除 tkinter GUI 中的所有元素?

python - Pandas 在组内排序然后聚合

Python:按条件和进行分组

python - 如何根据 python pandas.Dataframe 中的列表分配标签?

excel - 查找日期,返回前 5 天的总和

javascript - 添加单个 div 元素中显示的所有数字

ruby-on-rails - rails + PostgreSQL : grouping together with a sum