如何解决从值不是NaN的多个列中创建新列
我正在尝试从4个以相同名称开头的多列中创建一个新列。这些列中的3或4是NaN。我想让新列具有此非NaN值(如果它存在于特定行中)。否则,新列应为NaN。
开始于:
NaN = np.NaN
pd.DataFrame( {'process_time_1': [5,NaN,NaN],'process_time_2': [NaN,'process_time_3': [NaN,3,4],'process_time_4': [NaN,NaN]} )
如果希望新列显示为:
NaN = np.NaN
pd.DataFrame( {'process_time': [5,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
,
您可以将SELECT *
与DISTINCT
一起使用:
max
axis=1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。