我正在尝试编写python代码,在其中我将列值与其他列相乘。但是,在我的C列中有些值为NULL。我很难编程,如果值是NULL,则将其切换为1。
A B C Result should be: X Y
5 3 2 10 6
10 6 10 6
15 9 15 9
20 12 8 160 96
这是我尝试过的python代码:
if df[C] is NONE:
df[X] = df[A]*1
else:
df[X] = df[A]*df[C]
以此类推,df[B]
也是如此。但是,它仍然使我在excel中没有空格,而不是我需要的“ 10&6”和“ 15&9”。
我的代码得到的结果:
X Y
10 6
160 96
答案 0 :(得分:2)
您可以使用np.where
df
Out[97]:
A B C
0 5 3 2.0
1 10 6 NaN
2 15 9 NaN
3 20 12 8.0
np.where(df.C.isna(),df.A,df.A*df.C)
Out[98]: array([ 10., 10., 15., 160.])
您的if函数应该带有for循环
答案 1 :(得分:1)
只需使用fillna
来替代C
列中值为1的NaN。
df['X'] = df['A'] * df['C'].fillna(1)
df['Y'] = df['B'] * df['C'].fillna(1)
>>> df
A B C X Y
0 5 3 2 10 6
1 10 6 NaN 10 6
2 15 9 NaN 15 9
3 20 12 8 160 96