我的DataFrame
有多个重复索引,我的问题是如何将A
中的行col2
的值设置为 0 到其他价值,说 8 。
In [82]: df = pd.DataFrame({'col1':[1,2,3], 'col2':[9,9,0]}, index=['A','B','A'])
In [83]: df
Out[83]:
col1 col2
A 1 9
B 2 9
A 3 0
我知道这个小而固定的DataFrame
我可以使用ix
方法获得所需的位置,如下所示:
所需结果(从A 3 0
到A 3 8
的第3行更改):
In [84]: df.ix[2, 1] = 8
In [85]: df
Out[85]:
col1 col2
A 1 9
B 2 9
A 3 8
但是对于一些具有多个重复索引的大型且不断变化的DataFrame,如何将值{strong> 0 的A
中的行col2
的值设置为其他值?
In [90]: df2 = pd.DataFrame({'col1':[1,2,3,4], 'col2':[9,9,0,9]}, index=['A','B','A','A'])
In [91]: df2
Out[91]:
col1 col2
A 1 9
B 2 9
A 3 0
A 4 9
所需结果(从A 3 0
到A 3 8
的第3行更改):
In [91]: df2
Out[91]:
col1 col2
A 1 9
B 2 9
A 3 8
A 4 9
In [94]: df3 = pd.DataFrame({'col1':[1,2,3,4], 'col2':[9,9,0,0]}, index=['A','B','B','A'])
In [95]: df3
Out[95]:
col1 col2
A 1 9
B 2 9
B 3 0
A 4 0
所需结果(从A 4 0
到A 4 8
的第4行更改):
In [95]: df3
Out[95]:
col1 col2
A 1 9
B 2 9
B 3 0
A 4 8
答案 0 :(得分:3)
df.loc[(df.index == 'A') & (df.col2 == 0), 'col2'] = 8