如何根据另外两列有条件地制作新的pandas DF列

时间:2018-05-30 10:52:20

标签: python pandas

我有一个如下所示的数据框:

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的原因。

2 个答案:

答案 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