Pandas 通过分组添加百分比列
Pandas adding percentage column by grouping
按行计算一个值占总数的百分比的语法是什么?
例如,我想根据它的 Item 和 Name1 向我的 df 添加一个百分比列:
Item Name1 Name2 Value
111 x a 1
111 x b 2
111 y a 1
222 x i 1
222 y j 1
222 y k 1
通过将 Item 和 Name1 分组,结果将是:
Item Name1 Name2 Value Percent
111 x a 1 .33 because (1/3)
111 x b 2 .67 because (2/3)
111 y a 1 1 because (1/1)
222 x i 1 1 because (1/1)
222 y j 1 .5 because (1/2)
222 y k 1 .5 because (1/2)
非常感谢:)
谢谢
In [237]: df.groupby(['Item','Name1'])['Value'].transform(lambda x: x/x.sum())
Out[237]:
0 0.333333
1 0.666667
2 1.000000
3 1.000000
4 0.500000
5 0.500000
Name: Value, dtype: float64
按行计算一个值占总数的百分比的语法是什么?
例如,我想根据它的 Item 和 Name1 向我的 df 添加一个百分比列:
Item Name1 Name2 Value
111 x a 1
111 x b 2
111 y a 1
222 x i 1
222 y j 1
222 y k 1
通过将 Item 和 Name1 分组,结果将是:
Item Name1 Name2 Value Percent
111 x a 1 .33 because (1/3)
111 x b 2 .67 because (2/3)
111 y a 1 1 because (1/1)
222 x i 1 1 because (1/1)
222 y j 1 .5 because (1/2)
222 y k 1 .5 because (1/2)
非常感谢:)
谢谢
In [237]: df.groupby(['Item','Name1'])['Value'].transform(lambda x: x/x.sum())
Out[237]:
0 0.333333
1 0.666667
2 1.000000
3 1.000000
4 0.500000
5 0.500000
Name: Value, dtype: float64