我有一个配置,使用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.ilociatat

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/

10-12 21:07