In einem sehr allgemeinen Sinne, das Problem, das ich zu lösen suche, ändert eine Komponente eines mehrstufigen Index in Spalten. Das heißt, ich habe eine Series
, die einen Multilevel-Index enthält und ich möchte die niedrigste Ebene des Index in Spalten in einer dataframe
geändert. Hier ist die tatsächlichen Beispiel Problem Ich versuche zu lösen,MultiLevel-Index zu Spalten: Wert_Zählungen als Spalten in Pandas erhalten
Hier können wir einige Beispieldaten erzeugen:
foo_choices = ["saul", "walter", "jessee"]
bar_choices = ["alpha", "beta", "foxtrot", "gamma", "hotel", "yankee"]
df = DataFrame([{"foo":random.choice(foo_choices),
"bar":random.choice(bar_choices)} for _ in range(20)])
df.head()
, die uns gibt,
bar foo
0 beta jessee
1 gamma jessee
2 hotel saul
3 yankee walter
4 yankee jessee
...
Jetzt kann ich GROUPBY bar
und erhalten value_counts des foo
Felds,
und es gibt,
foo
jessee hotel 4
gamma 2
yankee 1
saul foxtrot 3
hotel 2
gamma 1
alpha 1
walter hotel 2
gamma 2
foxtrot 1
beta 1
Aber was ich will, ist so etwas wie,
hotel beta foxtrot alpha gamma yankee
foo
jessee 1 1 5 4 1 1
saul 0 3 0 0 1 0
walter 1 0 0 1 1 0
Meine Lösung war die folgende Bit zu schreiben:
for v in df['bar'].unique():
if v is np.nan: continue
df[v] = np.nan
df.ix[df['bar'] == v, v] = 1
dfgb = df.groupby('foo')
dfgb.count()[df['bar'].unique()]
DANKE SIE! Wo hat sich "entstapeln" versteckt ??? – milkypostman