Python 熊猫:根据其他列乘以列

Python 熊猫:根据其他列乘以列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个包含a列和b列的数据帧。如果b为真,我想用值x乘以列a,如果b为假,我想用值y乘以列a。实现这一目标的最佳方法是什么?您可以通过两个步骤完成: df.loc[df.b, 'a'] *= x df.loc[df.b == False, 'a'] *= y 或在1步中使用,其中: In [366]: df = pd.DataFrame({'a':randn(5), 'b':[True, True, False, True, False]}) df Out[366]:

我有一个包含a列和b列的数据帧。如果b为真,我想用值x乘以列a,如果b为假,我想用值y乘以列a。实现这一目标的最佳方法是什么?

您可以通过两个步骤完成:

df.loc[df.b, 'a'] *= x
df.loc[df.b == False, 'a'] *= y
或在1步中使用
,其中

In [366]:

df = pd.DataFrame({'a':randn(5), 'b':[True, True, False, True, False]})
df
Out[366]:
          a      b
0  0.619641   True
1 -2.080053   True
2  0.379665  False
3  0.134897   True
4  1.580838  False

In [367]:

df.a *= np.where(df.b, 5,10)
df
Out[367]:
           a      b
0   3.098204   True
1 -10.400266   True
2   3.796653  False
3   0.674486   True
4  15.808377  False

这给了我一个警告:C:\Python27\lib\site packages\numexpr\necompiler.py:746:DeprecationWarning:usi ing
oa\u ndim==0
op\u axes
为空时,不推荐使用。使用
oa_ndim==-1
或NumPy的多新迭代器第一个答案如何,我认为我的第二个答案使用链索引,这就是为什么你会得到警告,所以我将删除该警告第一个答案中的警告关于
df.loc[df.b==True,'a']*=5 df.loc[df.b==False,'a']*=10
?@初学者uu好的,我修好了,现在两个版本都应该可以了