4 回答

TA貢獻1804條經驗 獲得超7個贊
您可以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 鏈接鏈接到該函數。
編輯:在閱讀源代碼時pd.Series.value_counts
只需調用pd.value_counts

TA貢獻1830條經驗 獲得超3個贊
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
進而:
pd.crosstab(w['variable'],w['value'])
期望的結果:
value bronze gold silver
variable
Canada 1 2 1
China 1 1 2
South Korea 2 1 1

TA貢獻1797條經驗 獲得超6個贊
使用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貢獻1847條經驗 獲得超11個贊
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)
添加回答
舉報