【问题标题】:Python create a column based on the values of each row of another columnPython根据另一列的每一行的值创建一列
【发布时间】:2020-07-09 15:09:25
【问题描述】:

我有一个如下的熊猫数据框:

import pandas as pd
df = pd.DataFrame({'ORDER':["A", "A", "A", "B", "B","B"], 'GROUP': ["A_2018_1B1", "A_2018_1B1", "A_2018_1M1", "B_2018_I000_1C1", "B_2018_I000_1B1", "B_2018_I000_1C1H"], 'VAL':[1,3,8,5,8,10]})
df

    ORDER   GROUP            VAL
0    A      A_2018_1B1         1
1    A      A_2018_1B1H        3
2    A      A_2018_1M1         8
3    B      B_2018_I000_1C1    5
4    B      B_2018_I000_1B1    8
5    B      B_2018_I000_1C1H   10

我想创建一个列“CAL”作为“VAL”的总和,其中 GROUP 名称对于所有行都相同,最后期望 H 字符。因此,例如,将添加第一两行的“VAL”列,因为“GROUP”之间的唯一区别是第二行的最后一行有 H。第 3 行将保持原样,第 4 行和第 6 行将被添加,第 5 行将保持不变。

我的预期输出

    ORDER   GROUP            VAL    CAL
0    A      A_2018_1B1         1    4
1    A      A_2018_1B1H        3    4
2    A      A_2018_1M1         8    8
3    B      B_2018_I000_1C1    5    15
4    B      B_2018_I000_1B1    8    8
5    B      B_2018_I000_1C1H   10   15

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    试试replace 然后transform

    df.groupby(df.GROUP.str.replace('H','')).VAL.transform('sum')
    0     4
    1     4
    2     8
    3    15
    4     8
    5    15
    Name: VAL, dtype: int64
    
    df['CAL'] = df.groupby(df.GROUP.str.replace('H','')).VAL.transform('sum')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 2022-08-12
      相关资源
      最近更新 更多