借助if语句进行除法运算



如果两个输入都大于0 ,我正试图将组合数除以2

data = {'test':[1,1,0],'test2':[0, 1, 0,]}
df = pd.DataFrame(data)
df['combined'] = df['test'] +df['test2']
df 

我正在寻找一种方法(可能是一个if语句,如果test和test2的值都为1,则将df["combined"]除以2。

我已经尝试过了,但是它给出了一个错误

if ((df['test']> 1) and (df['test2']>1)):
df['combined'] / 2
else:
df['combined']

最好的方法是什么?

if语句中存在两个同类问题。首先,您应该知道(df['test']> 1)的结果是熊猫系列对象。

0    False
1    False
2    False
Name: test, dtype: bool

ifand操作都无法处理pandas Series对象,这就是您看到错误的原因。

最后,您可以使用np.where()来替换系列,条件是:

mask = (df['test']> 1) & (df['test2']>1)
df['combined'] = np.where(mask, df['combined'], df['combined'] / 2)

最新更新