Python 熊猫:根据其他列乘以列
我有一个包含a列和b列的数据帧。如果b为真,我想用值x乘以列a,如果b为假,我想用值y乘以列a。实现这一目标的最佳方法是什么?您可以通过两个步骤完成: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]:
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好的,我修好了,现在两个版本都应该可以了