我有一个pandas
数据框,由2000行x 8列组成。我希望能够将前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']
或其他什么?
答案 0 :(得分:3)
您可以使用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
然后您可以使用xs
和DataFrame.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()
答案 1 :(得分:1)