我有一個看起來像這樣的資料框:
| ID | 名稱 | 專業1 | 專業2 | 專業3 |
|---|---|---|---|---|
| 12 | 戴夫 | 英語 | 鈉 | 鈉 |
| 12 | 戴夫 | 鈉 | 生物學 | 鈉 |
| 12 | 戴夫 | 鈉 | 鈉 | 歷史 |
| 13 | 內特 | 西班牙語 | 鈉 | 鈉 |
| 13 | 內特 | 鈉 | 商業 | 鈉 |
我需要合并行,導致:
| ID | 名稱 | 專業1 | 專業2 | 專業3 |
|---|---|---|---|---|
| 12 | 戴夫 | 英語 | 生物學 | 歷史 |
| 13 | 內特 | 西班牙語 | 商業 | 鈉 |
我知道 groupby 可以做到這一點,但我無法讓它正常作業。任何人都可以幫忙嗎?
uj5u.com熱心網友回復:
如果您打算使用 groupby,則可以執行以下操作:
dataframe = dataframe.melt(['ID', 'Name']).dropna()
dataframe = dataframe.groupby(['ID', 'Name', 'variable'])['value'].sum().unstack('variable')
您可能不得不稍微弄亂列名,但這就是我認為使用 groupby 的可能解決方案。
uj5u.com熱心網友回復:
使用melt和pivot
>>> df.melt(['ID', 'Name']).dropna() \
.pivot(['ID', 'Name'], 'variable', 'value') \
.reset_index().rename_axis(columns=None)
ID Name Major1 Major2 Major3
0 12 Dave English Biology History
1 13 Nate Spanish Business NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408921.html
標籤:
