亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas 唯一值作為帶有計數的列

Pandas 唯一值作為帶有計數的列

慕萊塢森 2024-01-04 09:58:59
使用 pandas 數據幀并嘗試在分組輸出中翻轉它,該輸出采用唯一值并將它們作為一列,并將每個值的相應計數作為新數據幀中的值。這是起始數據框:df = pd.DataFrame([('gold', 'bronze', 'silver'),                   ('silver', 'gold', 'bronze'),                   ('gold', 'silver', 'bronze'),                   ('bronze', 'silver', 'gold')],                    columns=('Canada', 'China', 'South Korea'))df.head()    Canada  China   South Korea0   gold    bronze  silver1   silver  gold    bronze2   gold    silver  bronze3   bronze  silver  gold所需的輸出將是這樣的:    nation      gold    silver  bronze0   Canada        2          1       11   China         1          2       12   South Korea   1          1       2
查看完整描述

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


查看完整回答
反對 回復 2024-01-04
?
牛魔王的故事

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



查看完整回答
反對 回復 2024-01-04
?
FFIVE

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


查看完整回答
反對 回復 2024-01-04
?
回首憶惘然

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)


查看完整回答
反對 回復 2024-01-04
  • 4 回答
  • 0 關注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號