【问题标题】:(Python) How to group unique values in column with total of another column(Python)如何将列中的唯一值与另一列的总计分组
【发布时间】:2023-03-27 18:23:01
【问题描述】:

这是我的数据框的示例:

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

我希望能够使用州代码对公司的行业进行分组。例如,我想知道某个州的软件公司总数等(例如,CA 有 200 家软件公司,纽约有 100 家金融公司)。

我目前只是使用以下方法计算每个州的公司总数:

 usa_df['state_code'].value_counts()

但我不知道如何对每个州的每种行业的数量进行分组。

【问题讨论】:

  • 例如你想在 CA 找到多少个谷歌?
  • 嗨@PiyushS.Wanare,感谢您的回复。不,我想找到每个州的软件公司总数,每个州的金融公司总数等。(例如:Software, CA, 1200)
  • df.iloc[:, 2:].groupby(“state_code”).sum()

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


【解决方案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')

【讨论】:

    【解决方案2】:

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

    df[df.country_code == 'USA'].groupby('state_code').sum().reset_index()
    
    #  state_code  commerce  finance  software
    #0         CA         0        0         1
    

    【讨论】:

    • 如果您想保留'unknowns',请删除df.country_code == 'USA',但这将确保您只收集美国的州
    【解决方案3】:

    这可能对您有所帮助:

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

    【讨论】:

    • 感谢您的帮助!
    猜你喜欢
    • 2021-12-29
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2017-12-08
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    相关资源
    最近更新 更多