這個問題在這里已經有了答案: 如何融化熊貓資料框? (1 個回答) 11 小時前關閉。
如何在 Pandas 中組合很多列?
我有 20 列,我只想提交其中的一列
上面帶有 4 列的示例:
| ID | 型別 | AB1 | AB2 | AB3 | AB4 |
|---|---|---|---|---|---|
| 0 | 真的 | 機管局 | 抄送 | 南 | Z Z |
| 1 | 錯誤的 | BB | 南 | 衛生局 | 菊 |
我想上交:
| ID | 型別 | AB |
|---|---|---|
| 0 | 真的 | 機管局 |
| 1 | 錯誤的 | BB |
| 2 | 真的 | 抄送 |
| 3 | 錯誤的 | 衛生局 |
| 4 | 真的 | Z Z |
| 5 | 錯誤的 | 菊 |
有沒有人有提示?
需要一種方法來保留“型別”
謝謝!
uj5u.com熱心網友回復:
你可以嘗試這樣的事情:
>>> df.melt('ID', value_name='AB').dropna().rename_axis('ID')['AB'].reset_index()
ID AB
0 0 AA
1 1 BB
2 2 CC
3 5 HH
4 6 ZZ
5 7 JU
uj5u.com熱心網友回復:
有一些不同的方法可以解決它,但您可以主要使用 stack 方法:
df = pd.DataFrame({"id": [0, 1], "a": [1,2], "b": [3, 4], "c": [5, 6], "d": [7, 8]})
stack_columns = ["a", "b", "c", "d"]
# Assuming you care about the id
stacked_df = df.set_index("id").stack().reset_index()
stacked_df.drop("level_1", axis=1, inplace=True)
stacked_df.rename(columns={0: "".join(stack_columns)}, inplace=True)
# Assuming you don't care and want a new id
stacked_df_2 = df.loc[:, stack_columns].stack().reset_index()
stacked_df_2.drop(["level_0", "level_1"], axis=1, inplace=True)
stacked_df_2.rename(columns={0: "".join(stack_columns)}, inplace=True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/371463.html
