对于dataframe,我有一个问题如下:
NODEID BigNode Node1 Node2 Node3
0 500-1 NaN 2000.0 NaN NaN
1 500-2 NaN NaN 3000.0 NaN
2 500-3 NaN NaN NaN 4000.0
3 500-4 50000.0 NaN NaN NaN
4 500-5 60000.0 NaN NaN NaN我需要的是创建一个新的列( Node-F ),以便:如果存在BigNode值,那么将一个特定的常量值(SomeValBN)写入Node-F,类似地,对于rest Node1、Node2、Node3,在每个BigNode、Node-1、Node-2、Node-3中,都要将各自的值写入Node-F。
NODEID BigNode Node1 Node2 Node3 Node-F
0 500-1 NaN 2000.0 NaN NaN SomeVal1
1 500-2 NaN NaN 3000.0 NaN SomeVal2
2 500-3 NaN NaN NaN 4000.0 SomeVal3
3 500-4 50000.0 NaN NaN NaN SomeValBN
4 500-5 60000.0 NaN NaN NaN SomeValBN在EXCEL中,我使用嵌套的if()语句解决了上述问题:
=IF(B2>0;"BN1";(IF(C2>0;"N1";(IF(D2>0;"N2";(IF(E2>0;"N3";0)))))))
where, BN1="SomeValBN", N1="SomeVal1" etc上述内容将存储在一个新的dataframe df_1中,没有索引。
我完全被困住了!谢谢
发布于 2021-03-11 13:04:23
我们可以通过使用条件语句来实现这一点。
让df成为您的数据格式:
for i in range(df.shape[0]):
if(df.at[i, 'BigNode'] > 0):
df.at[i, 'Node-F'] = 'SomeValBN'
elif(df.at[i, 'Node1'] > 0):
df.at[i, 'Node-F'] = 'SomeVal1'
elif(df.at[i, 'Node2'] > 0):
df.at[i, 'Node-F'] = 'SomeVal2'
elif(df.at[i, 'Node3'] > 0):
df.at[i, 'Node-F'] = 'SomeVal3'
else:
df.at[i, 'Node_F'] = '0'https://stackoverflow.com/questions/66582406
复制相似问题