【问题标题】:Pandas: adding new column to existing Data Frame for grouping purposesPandas:为现有数据框添加新列以进行分组
【发布时间】:2017-02-07 12:48:47
【问题描述】:

我有一个由 2000 行 x 8 列组成的 pandas 数据框。我希望能够将前 4 列以及其他 4 列组合在一起,但我不知道如何。目的是创建一个分类条形图,根据 C1=C5、C2=C6 等分配颜色。

我的数据框:

In[1]: df.head(5)
Out[1]: 

    C1  C2  C3  C4  C5  C6  C7  C8
0   15  37  17  10  8   11  19  86
1   39  84  11  5   5   13  9   11
2   10  20  30  51  74  62  56  58
3   88  2   1   3   9   6   0   17
4   17  17  32  24  91  45  63  48

您是否建议添加另一列,例如 df['Gr'] 或其他什么?

【问题讨论】:

    标签: python pandas dataframe grouping bar-chart


    【解决方案1】:

    你可以使用MultiIndex.from_arrays:

    df.columns = pd.MultiIndex.from_arrays([['a'] * 4 + ['b'] * 4 , df.columns])
    print (df)
        a               b            
       C1  C2  C3  C4  C5  C6  C7  C8
    0  15  37  17  10   8  11  19  86
    1  39  84  11   5   5  13   9  11
    2  10  20  30  51  74  62  56  58
    3  88   2   1   3   9   6   0  17
    4  17  17  32  24  91  45  63  48
    

    那么你可以使用xsDataFrame.plot.bar

    import matplotlib.pyplot as plt
    
    f, a = plt.subplots(2,1)
    df.xs('a', axis=1).plot.bar(ax=a[0])
    df.xs('b', axis=1).plot.bar(ax=a[1])
    plt.show()
    


    import matplotlib.pyplot as plt
    
    df.columns = pd.MultiIndex.from_arrays([['a'] * 4 + ['b'] * 4 , df.columns])
    df.stack(0).T.plot.bar(rot='0', legend=False)
    
    df.columns = ['a'] * 4 + ['b'] * 4
    df = df.T.plot.bar(rot='0')
    
    plt.show()
    

    【讨论】:

    • 好的,你将如何创建条形图?
    • 我添加解决方案,请查看。
    • 谢谢!如果预期结果是一个分类条形图,一侧有四个条形 (xlabel=a),另一侧有四个条形 (xlabel=b),而不是 5 个类别?
    • 好的,但是matplotlib 对我来说并不容易,所以给我一点时间
    • 好的,我有 2 个解决方案给你(我不是 matplotlib 专家,很抱歉)。请检查它,如果需要更改某些内容,我明天尝试(或使用标签matplotlib 发布另一个问题)。现在我得回家了。
    【解决方案2】:

    使用pd.concat

    pd.concat([df.iloc[:, :4], df.iloc[:, 4:]], axis=1, keys=['first4', 'second4'])
    

    【讨论】:

    • 如何从这里创建条形图?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    相关资源
    最近更新 更多