【问题标题】:Sorting a dataset based on 2 columns & computing averages of sub-datasets based on the 2 columns' contents根据 2 列对数据集进行排序并根据 2 列的内容计算子数据集的平均值
【发布时间】:2022-12-06 01:43:09
【问题描述】:

我有一个数据集,详细说明了不同州的投票数据以及该州投票给 DEM 或 REP 的人数百分比。 What my data frame looks like:

我本质上是想找出 X 州投票支持 DEM 或 REP 的人的平均百分比。所以我的输出是这样的:

新罕布什尔州 |数据元 | 55% 新罕布什尔州 |代表 | 45% 缅因州 |数据元 | 45% 缅因州 |代表 | 54% 等等

我最初想到的是简单地遍历整个数据集,并为每个州的 DEM 百分比或 REP 百分比分配新的 pct 变量,但我觉得那是低效的。

我正在考虑对数据进行排序,使其具有 state1、DEM |状态 1,REP |状态 2,DEM | state3、REP 等,然后求平均值。但是我对 pandas 不太熟悉(这是我正在尝试使用的)。也许有人可以指出我正确的方向。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    IIUC,使用 pandas.concatGroupBy.mean

    cols = ["state", "party"]
    
    (
        pd.concat([df_house, df_senate],
                  ignore_index=True)
            .groupby(cols, as_index=False)
            .mean(numeric_only=True)
            .sort_values(by=cols)
    )
    

    这将返回一个 (pandas.core.frame.DataFrame),您可以将其分配给一个变量:

    df_average = pd.concat([df_house, df_senate], ignore_index=True).groupby(cols, as_index=False).mean(numeric_only=True).sort_values(by=cols)
    

    【讨论】:

      【解决方案2】:

      尝试使用 df.groupby(['state','party'])['pct'].mean()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-22
        • 1970-01-01
        • 2017-08-11
        • 1970-01-01
        • 2013-08-15
        • 2022-07-19
        • 2016-09-10
        • 2020-08-19
        相关资源
        最近更新 更多