gpt4 book ai didi

python - 从多个列创建新列,其中值不是 NaN

转载 作者:行者123 更新时间:2023-12-04 12:36:41 24 4
gpt4 key购买 nike

我正在尝试从 4 个以相同名称开头的多列创建一个新列。这些列中有 3 或 4 列是 NaN。如果特定行中存在此非 NaN 值,我希望新列具有此非 NaN 值。否则新列应该是 NaN。
从...开始:

    NaN = np.NaN
pd.DataFrame( {'process_time_1': [5, NaN, NaN, NaN], 'process_time_2': [NaN, NaN, NaN, NaN],
'process_time_3': [NaN, NaN, 3, 4], 'process_time_4': [NaN, NaN, NaN, NaN]} )
如果希望新列看起来像:
    NaN = np.NaN
pd.DataFrame( {'process_time': [5, NaN, 3, 4]} )
我目前拥有的代码:
    cols =  [df1.columns.str.startswith('process')]
df1[cols][df1.notna()]
我正在打破我的头脑,如果有人可以帮助朝着正确的方向前进,那就太好了:)
提前致谢 !

最佳答案

您可以使用 ffill 这里用有效值转发填充,只保留最后一列:

df['process_time'] = df.filter(like='process').ffill(axis=1).iloc[:,-1]

print(df)
process_time_1 process_time_2 process_time_3 process_time_4 \
0 5.0 NaN NaN NaN
1 NaN NaN NaN NaN
2 NaN NaN 3.0 NaN
3 NaN NaN 4.0 NaN

process_time
0 5.0
1 NaN
2 3.0
3 4.0

关于python - 从多个列创建新列,其中值不是 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64008028/

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