我有一个配置,使用loc和iloc的组合来修改数据框的值非常有用。
df = pd.DataFrame([[1,2],[1,3],[1,4],[2,6],[2,5],[2,7]],columns=['A','B'])
基本上在上面的数据框中,我只想获取等于某值(即A = 2)的列。这将给:
A B
3 2 6
4 2 5
5 2 7
然后修改第二个索引的B的值(在这种情况下,实际上是索引4)
我可以使用以下命令访问所需的值:
df.loc[df['A'] == 2,'B'].iat[1]
(或.iloc而不是.iat,但我听说要更改很多单行,iat会更快)
它让我:5
但是我似乎无法使用相同的命令对其进行修改:
df.loc[df['A'] == 2,'B'].iat[1] = 0
它给了我:
A B
0 1 2
1 1 3
2 1 4
3 2 6
4 2 5
5 2 7
我想得到这个:
A B
0 1 2
1 1 3
2 1 4
3 2 6
4 2 0
5 2 7
谢谢 !
最佳答案
我们不应该链接.loc
和.iloc
(iat
,at
)
df.loc[df.index[df.A==2][1],'B']=0
df
A B
0 1 2
1 1 3
2 1 4
3 2 6
4 2 0
5 2 7
关于python - 使用.loc在DataFrames中设置值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56764676/