gpt4 book ai didi

python - 如何在 Pandas 中将多列折叠成一列

转载 作者:行者123 更新时间:2023-11-28 20:58:48 25 4
gpt4 key购买 nike

我有一个包含用户和类别的 Pandas 数据框,但这些类别有多个列。

|   user  |       category    | val1 | val2 | val3 |
| ------ | ------------------| -----| ---- | ---- |
| user 1 | c1 | 3 | NA | None |
| user 1 | c2 | NA | 4 | None |
| user 1 | c3 | NA | NA | 7 |
| user 2 | c1 | 5 | NA | None |
| user 2 | c2 | NA | 7 | None |
| user 2 | c3 | NA | NA | 2 |

我想获取它,以便将值压缩到单个列中。

|   user  |       category    | value|
| ------ | ------------------| -----|
| user 1 | c1 | 3 |
| user 1 | c2 | 4 |
| user 1 | c3 | 7 |
| user 2 | c1 | 5 |
| user 2 | c2 | 7 |
| user 2 | c3 | 2 |

最终得到如下矩阵:

np.array([[3, 4, 7], [5, 7, 2]])

最佳答案

您可以使用 pd.DataFrame.bfill回填选定列的值。

val_cols = ['val1', 'val2', 'val3']

df['value'] = pd.to_numeric(df[val_cols].bfill(axis=1).iloc[:, 0], errors='coerce')

print(df)

user0 category val1 val2 val3 value
0 user 1 c1 3.0 NaN None 3.0
1 user 1 c2 NaN 4.0 None 4.0
2 user 1 c3 NaN NaN 7 7.0
3 user 2 c1 5.0 NaN None 5.0
4 user 2 c2 NaN 7.0 2 7.0
5 user 2 c3 NaN NaN 2 2.0

关于python - 如何在 Pandas 中将多列折叠成一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51102883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com