如何在Pandas数据框中有选择地更新值的子集?

时间:2019-04-03 22:12:38

标签: python pandas dataframe

我有一个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。

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