我有一个如下所示的数据框:
col6
我想创建另一个基于条件的列col2
:如果col3
== 1,则col5
* col2
,否则为0;如果col4
== 2,则col5
* col 1 | col2 | col3 | col4 | col5 | col6
'abc' | 1 | 20 | 10 | 15 | 300
'abc' | 2 | 25 | 5 | 30 | 150
'def' | 1 | 340 | 12 | 22 | 7480
'def' | 2 | 185 | 16 | 120 | 1920
...
,否则为0.因此生成的df应如下所示:
col2
如果在pin.uniqueId()
没有1或2的情况下,1或2都不返回0的原因。
答案 0 :(得分:2)
试试这个,
df.loc[df['col2'] ==1,'col6']=df['col3']*df['col5']
df.loc[df['col2'] ==2,'col6']=df['col4']*df['col5']
df['col6']=df['col6'].fillna(0)
答案 1 :(得分:1)
使用np.select
:
m1 = df.col2 == 1
m2 = df.col2 == 2
df['col6'] = np.select([m1, m2], [df.col3 * df.col5, df.col4 * df.col5], default=0)
print (df)
col 1 col2 col3 col4 col5 col6
0 'abc' 1 20 10 15 300
1 'abc' 2 25 5 30 150
2 'def' 1 340 12 22 7480
3 'def' 2 185 16 120 1920