2016-09-29 4 views
2

Ich habe eine pandas Data Frame, bestehend aus 2000 Zeilen x 8 Spalten. Ich möchte in der Lage sein, die ersten 4 Spalten zusammen zu gruppieren, sowie die anderen 4, aber ich kann nicht herausfinden, wie. Der Zweck besteht darin, ein kategorisches Balkendiagramm mit Farben zu erzeugen, die gemäß C1 = C5, C2 = C6 usw. zugewiesen sind.Pandas: Hinzufügen neuer Spalte zu bestehenden Datenrahmen für Gruppierungszwecke

Meine Daten Rahmen:

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 

Haben Sie schlagen vor, das Hinzufügen eines weiteren Spalte wie df['Gr'] oder was sonst?

Antwort

3

können Sie MultiIndex.from_arrays verwenden:

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 

Dann können Sie verwenden xs und 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() 

graph


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() 
+0

Ok, und wie würden Sie das Balkendiagramm erstellen? – FaCoffee

+0

Ich füge Lösung hinzu, bitte überprüfen Sie es. – jezrael

+0

Danke! Was wäre, wenn das beabsichtigte Ergebnis ein kategorischer Barplot mit vier Takten auf der einen Seite (xlabel = a) und vier auf der anderen Seite (xlabel = b) anstelle von 5 Kategorien wäre? – FaCoffee

1

Verwendung pd.concat

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

enter image description here

+0

Wie würden Sie das Balkendiagramm von hier schaffen? – FaCoffee

Verwandte Themen