gpt4 book ai didi

python - 如何将多列转换为单列?

转载 作者:行者123 更新时间:2023-12-04 14:53:38 25 4
gpt4 key购买 nike

我有一个onehot-encoded列,df,零为“nan”。我正在尝试将 onehot 编码的列转换为单列。

假设下面的数据框,df

    p1   |   p2  |   p3   |  p4   |  p5   |
---------------------------------------
0 cat nan nan nan nan
1 nan dog nan nan nan
2 nan nan horse nan nan
3 nan nan nan donkey nan
4 nan nan nan nan pig

所需输出
    animals
-----------------
0 cat
1 dog
2 horse
3 donkey
4 pig

最佳答案

如果每行总是只有一个非缺失值,请使用前向填充缺失值(如 DataFrame.fillna method='ffill' ),然后按位置选择最后一列 DataFrame.iloc , 也适用于一列 DataFrame添加 Series.to_frame :

df = df.ffill(axis=1).iloc[:, -1].to_frame('new')
print (df)
new
0 cat
1 dog
2 horse
3 donkey
4 pig

如果可能,每行使用更多非缺失值 DataFrame.stack join每个第一级:
print (df)
p1 p2 p3 p4 p5
0 cat NaN NaN NaN lion
1 NaN dog NaN NaN NaN
2 NaN NaN horse NaN NaN
3 NaN NaN NaN donkey NaN
4 NaN NaN NaN NaN pig

df2 = df.stack().groupby(level=0).apply(', '.join).to_frame('new')
print (df2)
new
0 cat, lion
1 dog
2 horse
3 donkey
4 pig

或 lambda 函数:
df2 = df.apply(lambda x: x.dropna().str.cat(sep=', '), axis=1).to_frame('new')
print (df2)
new
0 cat, lion
1 dog
2 horse
3 donkey
4 pig

关于python - 如何将多列转换为单列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59085247/

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