1

我想使用 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'
}
      )
4

1 回答 1

0

编辑:想通了!将关闭。

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
于 2021-09-01T16:13:45.380 回答