熊猫集团有特殊金额

时间:2018-02-28 10:16:51

标签: python pandas pandas-groupby

假设我有类似的数据,我想根据功能和类型对它们进行分组。

feature  type    size
Alabama  1       100
Alabama  2       50
Alabama  3       40
Wyoming  1       180
Wyoming  2       150
Wyoming  3       56

当我申请df=df.groupby(['feature','type']).sum()[['size']]时,我会按预期得到这个。

                size
(Alabama,1)     100
(Alabama,2)     50
(Alabama,3)     40
(Wyoming,1)     180
(Wyoming,2)     150
(Wyoming,3)     56

但是我想要只使用相同类型的大小而不是类型和功能。虽然这样做我想保持索引为(特征,类型)元组。我的意思是我希望得到这样的东西,

                size
(Alabama,1)     280
(Alabama,2)     200
(Alabama,3)     96
(Wyoming,1)     280
(Wyoming,2)     200
(Wyoming,3)     96

我很难找到一种方法来做到这一点。我需要一些帮助,谢谢

2 个答案:

答案 0 :(得分:3)

MultiIndex使用set_index,然后sum使用Series,使用汇总功能返回相同的长度df = df.set_index(['feature','type']) df['size'] = df.groupby(['type'])['size'].transform('sum') print (df) size feature type Alabama 1 280 2 200 3 96 Wyoming 1 280 2 200 3 96

transform

编辑:首先聚合两列,然后使用df = df.groupby(['feature','type']).sum() df['size'] = df.groupby(['type'])['size'].transform('sum') print (df) size feature type Alabama 1 280 2 200 3 96 Wyoming 1 280 2 200 3 96

private static String escapeNonAscii(String str) {

    StringBuilder retStr = new StringBuilder();
    for(int i=0; i<str.length(); i++) {
        int cp = Character.codePointAt(str, i);
        int charCount = Character.charCount(cp);
        if (charCount > 1) {
            i += charCount - 1; // 2.
            if (i >= str.length()) {
                throw new IllegalArgumentException("truncated unexpectedly");
            }
        }

        if (cp < 128) {
            retStr.appendCodePoint(cp);
        } else {
            retStr.append(String.format("\\u%x", cp));
        }
    }
    return retStr.toString();
}

答案 1 :(得分:0)

这是一种方式:

df['size'] = df['type'].map(df.groupby('type')['size'].sum())

df.groupby(['feature', 'type'])['size_type'].sum()

# feature  type
# Alabama  1       280
#          2       200
#          3        96
# Wyoming  1       280
#          2       200
#          3        96
# Name: size_type, dtype: int64