在python中使用value_counts和多列分组百分比



我想使用value_counts(normalize=True)创建一个跨多个列的分组百分比表。我想这样做类似于下面,除了添加& normalize=True"部分,但不确定如何使用groupby.agg。关于如何在不增加更多代码行的情况下做到这一点,有什么想法吗?我的真实数据有很多列,除了分组列,每个列都有1-5的刻度。

在下面的示例:

df = pd.DataFrame({'Country': ['FR', 'FR', 'GER','GER'],
'Foo': ['1', '2', '3', '1'],
'Bar': ['5', '5', '3', '1'],
'Baz': ['5', '1', '3', '4']})
df2=df.groupby('Country').agg(
{
'Foo': 'value_counts' ,
'Bar': 'value_counts',
'Baz': 'value_counts'
}
)

编辑:明白了!将关闭。

import pandas as pd

df = pd.DataFrame({'Country': ['FR', 'FR', 'GER','GER'],
'Foo': ['1', '2', '3', '1'],
'Bar': ['5', '5', '3', '1'],
'Baz': ['5', '1', '3', '4']})
f=lambda x: x/x.sum()
df2=df.groupby('Country').agg(
{
'Foo': 'value_counts' ,
'Bar': 'value_counts',
'Baz': 'value_counts'
}
).groupby(level=0).apply(f).sort_index
df2

最新更新