[英]MultiLevel index to columns : getting value_counts as columns in pandas
在一般意義上,我要解決的問題是將多級索引的一個組件更改為列。 也就是說,我有一個包含多級索引的Series
,我希望將索引的最低級別更改為dataframe
列。 這是我想要解決的實際示例問題,
在這里我們可以生成一些示例數據:
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()
這給了我們,
bar foo
0 beta jessee
1 gamma jessee
2 hotel saul
3 yankee walter
4 yankee jessee
...
現在,我可以組合bar
並獲取foo
字段的value_counts,
dfgb = df.groupby('foo')
dfgb['bar'].value_counts()
它輸出,
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
但我想要的是像,
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
我的解決方案是寫下面的內容:
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()]
我想你想要:
dfgb['bar'].value_counts().unstack().fillna(0.)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.