计算相对百分比

2024-05-19 16:25:52 发布

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

我需要用熊猫来计算每个类别的相对百分比,我知道我需要用熊猫来分组,但我有点迷路了。你知道吗

输入:

ID | stringValue | FloatValue
A  | 'string'    | 2
A  | 'string2'   | 8
B  | 'string'    | 5

预期产量:

ID | stringValue | FloatValue | Perc
A  | 'string'    | 2          | 20   
A  | 'string2'   | 8          | 80
B  | 'string'    | 5          | 100

预期输出组按其ID值并计算百分比。 这里,在A中有两个值28。所以百分比应该是100 * 2 / (2+8)100 * 8 / (2+8)。对于id B,只有一个值,因此Perc应该是100


Tags: idstring类别百分比产量percstring2迷路
3条回答

考虑到您的数据是一个名为“data”的数据帧,下面的代码应该可以做到这一点:

data["Perc"] = data.apply(lambda x: x["FloatValue"] * 100 / data.groupby(["ID"]).sum()["FloatValue"][x["ID"]], axis=1)

它按ID对项目进行分组,并计算FloatValue的总和。DataFrame的apply方法通过将FloatValue除以相应的组和来创建一个新的序列。你知道吗

IIUC尝试:

df['Perc'] = df.groupby('ID')['FloatValue'].transform(lambda x: (x/x.sum()) * 100)

# Output


   ID   stringValue FloatValue  Perc
0   A   'string'      2         20
1   A   'string2'     8         80
2   B   'string'      5        100

如果5->;100%是一个拼写错误,而您的意思是如何让我的数字看起来像一个百分比,那么您可以轻松地做到这一点。你知道吗

如果你希望它是%的话,你将不得不除以10,你可以打印它乘以100。你知道吗

如果你希望它是一个百分比,你会记住这一点,然后做相反的事情,乘以10。你知道吗

您只需执行以下操作:

df["Perc"] = df["FloatValue"] * 10

相关问题 更多 >