Pandas dataframes:为以相同字符串开头的行添加带有百分比的列

2024-06-16 11:22:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个具有以下结构的数据帧:

     1995  1996
AT1     3     6
AT2     5     3
AT3     2     1
FR1     1     1
FR5     2     1
FR7     7     8

我想添加列或创建一个数据框,其中包含每行占总数的百分比,具体取决于前两个字母所指示的组。 基本上,对于每一列:

  • 对每组行的值求和(即对开始的所有行求和 通过AT,然后是以FR…)开头的所有行

  • 将不同组中的每一行除以其总和,然后乘以 100.

  • 将这些值放入新列或新数据框中

预期产出将是:

     1995  1996  Percentage_1995  Percentage_1996
AT1     3     6               30               60
AT2     5     3               50               30
AT3     2     1               20               10
FR1     1     1               10               10
FR5     2     1               20               10
FR7     7     8               70               80

我知道这可能听起来很混乱,所以如果我不太清楚,我道歉。如果您能提供任何帮助,我将不胜感激。先谢谢你


Tags: 数据字母fr结构at百分比总数percentage
1条回答
网友
1楼 · 发布于 2024-06-16 11:22:24

您可以使用GroupBy.transformdf.div进行除法,使用df.mul乘以100,然后使用df.assign

temp = df.div(
    df.groupby(df.index.str[:2]).transform("sum")
).mul(100).add_prefix("Percentage")

df.assign(**temp)
    1995  1996  Percentage1995  Percentage1996
AT1     3     6            30.0            60.0
AT2     5     3            50.0            30.0
AT3     2     1            20.0            10.0
FR1     1     1            10.0            10.0
FR5     2     1            20.0            10.0
FR7     7     8            70.0            80.0

相关问题 更多 >