我有一个pandas数据框,我想根据另一列的值来更新某个列的值,具体来说,我想做(数据是一个具有3列['Depth','A' ,'B']:
data['A'] = data['B'] = 0.0
data.loc[:,data.Depth == 'A'].Topsoil = 1.0
data.loc[:,data.Depth == 'B'].Subsoil = 1.0
然后我得到了错误消息:
IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match
在大熊猫中这样做的正确方法是什么?
顺便说一句,我正在使用Python 3.7.0和pandas 0.24.1。
答案 0 :(得分:0)
考虑这个简单的数据框
data = pd.DataFrame({'A': [0,0,0,0],'B':[0,1,0,0] })
A B
0 0 0
1 0 1
2 0 0
3 0 0
如果要基于B的值更改A的值,则可以
data['A'][data['B'] == 1] = 2
A B
0 0 0
1 2 1
2 0 0
3 0 0