我有df
如下所示的数据框。
df
DATA ELEMENT PORT LOCATION P_RISK S_RISK W_RISK Total_Risk
Event 1000 SGSIN 0 0 0 0
Event 2000 MYKUL 0 1 0 1
Event 3000 PARIS 0 0 1 1
Event 4000 LYON 1 0 0 1
Event 1000 USNYK 0 0 0 0
Event 2000 INCOK 0 0 1 1
Event 3000 MUMBAI 0 0 0 0
Event 4000 LAHORE 1 0 0 1
Event 2000 INCOK 0 0 0 0
Event 3000 PARIS 0 0 0 0
健康)状况
*如果Data Element
为1000或2000,并且Total Risk
为1,则comment
使用具有风险名称+端口的新列填充
*如果Data Element
为3000或4000,并且Total Risk
为1,则comment
用With填充新列Risk Name + LOCATION
*如果Total Risk
为0,则填充无风险标识
预期产量
df
DATA ELEMENT PORT LOCATION P_RISK S_RISK W_RISK Total_Risk Comment
Event 1000 SGSIN 0 0 0 0 No Risk Indentified
Event 2000 MYKUL 0 1 0 1 S_RISK predicted at MYKUL
Event 3000 PARIS 0 0 1 1 W_RISK predicted at PARIS
Event 4000 LYON 1 0 0 1 P_RISK predicted at LYON
Event 1000 USNYK 0 0 0 0 No Risk Indentified
Event 2000 INCOK 0 0 1 1 W_RISK predicted at INCOK
Event 3000 MUMBAI 0 0 0 0 No Risk Indentified
Event 4000 LAHORE 1 0 0 1 P_RISK predicted at LAHORE
Event 2000 INCOK 0 0 0 0 No Risk Indentified
Event 3000 PARIS 0 0 0 0 No Risk Indentified
如何才能做到这一点?
我dot
用np.where
s2=df.filter(like='_RISK')
s2=s2.dot(s2.columns)
df['new']=np.where(s2=='' ,'No Risk Indentified',s2 + ' predict at ' +df.PORT.mask(df.PORT=='',df.LOCATION))
df
Out[35]:
DATA ELEMENT PORT ... W_RISK Total_Risk new
0 Event 1000 SGSIN ... 0 0 No Risk Indentified
1 Event 2000 MYKUL ... 0 1 S_RISKpredict atMYKUL
2 Event 3000 ... 1 1 W_RISKpredict atPARIS
3 Event 4000 ... 0 1 P_RISKpredict atLYON
4 Event 1000 USNYK ... 0 0 No Risk Indentified
5 Event 2000 INCOK ... 1 1 W_RISKpredict atINCOK
6 Event 3000 ... 0 0 No Risk Indentified
7 Event 4000 ... 0 1 P_RISKpredict atLAHORE
8 Event 2000 INCOK ... 0 0 No Risk Indentified
9 Event 3000 ... 0 0 No Risk Indentified
[10 rows x 9 columns]
方法2
s2=df.filter(like='_RISK').ne(0).stack()
s2=s2[s2].reset_index(level=1)
df['new']=(s2['level_1'] + ' predict at ' +df.PORT.mask(df.PORT=='',df.LOCATION)).fillna('No Risk Indentified')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句