4 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以df.apply
與*一起使用pd.value_counts
df.apply(pd.value_counts).T
? ? ? ? ? ? ?bronze? gold? silver
Canada? ? ? ? ? ? 1? ? ?2? ? ? ?1
China? ? ? ? ? ? ?1? ? ?1? ? ? ?2
South Korea? ? ? ?2? ? ?1? ? ? ?1
* 我沒有找到 的文檔pd.value_counts
,因此將 github 鏈接鏈接到該函數(shù)。
編輯:在閱讀源代碼時(shí)pd.Series.value_counts
只需調(diào)用pd.value_counts

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
w = df.melt()
variable value
0 Canada gold
1 Canada silver
2 Canada gold
3 Canada bronze
4 China bronze
5 China gold
6 China silver
7 China silver
8 South Korea silver
9 South Korea bronze
10 South Korea bronze
11 South Korea gold
進(jìn)而:
pd.crosstab(w['variable'],w['value'])
期望的結(jié)果:
value bronze gold silver
variable
Canada 1 2 1
China 1 1 2
South Korea 2 1 1

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用pd.get_dummies和sum
pd.get_dummies(df.T, prefix='',prefix_sep='').sum(level=0,axis=1)
Out[995]:
bronze gold silver
Canada 1 2 1
China 1 1 2
South Korea 2 1 1

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
df = pd.DataFrame([('gold', 'bronze', 'silver'),
('silver', 'gold', 'bronze'),
('gold', 'silver', 'bronze'),
('bronze', 'silver', 'gold')],
columns=('Canada', 'China', 'South Korea')).transpose()
df.apply(pd.value_counts,axis=1)
添加回答
舉報(bào)