(Python)如何将列中的唯一值与另一列的总和进行分组

时间:2018-04-11 13:31:23

标签: python pandas data-analysis data-science pandas-groupby

这是我的数据框架的示例:

company_name country_code state_code software finance commerce etc......
google       USA           CA          1        0          0
jimmy        GBR           unknown     0        0          1

我希望能够将公司的行业与其州代码分组。例如,我想拥有一个州等软件公司的总数(例如,加州的200家软件公司,纽约的100家金融公司)。

我目前只计算每个州的公司总数:

 usa_df['state_code'].value_counts()

但我无法弄清楚如何对每个州的每种行业的数量进行分组。

3 个答案:

答案 0 :(得分:1)

df.groupby(['state_code']).agg({'software' : 'sum', 'finance' : 'sum', ...})

这将按state_code分组,并总结每个分组中“软件”,“财务”等的数量。

也可以做一个pivot_table:

df.pivot_table(index = 'state_code', columns = ['software', 'finance', ...], aggfunc = 'sum')

答案 1 :(得分:1)

如果1s和0s是每个类别的布尔标志,那么你应该只需要求和。

df[df.country_code == 'USA'].groupby('state_code').sum().reset_index()

#  state_code  commerce  finance  software
#0         CA         0        0         1

答案 2 :(得分:0)

这可能会对您有所帮助:

result_dataframe = dataframe_name.groupby('state_code ').sum()