假设我有以下数据框,我想更改 c
列中的两个元素,它们对应于 a
列中的前两个元素,它们等于 1
等于 2
。
>>> df = pd.DataFrame({"a" : [1,1,1,1,2,2,2,2], "b" : [2,3,1,4,5,6,7,2], "c" : [1,2,3,4,5,6,7,8]})
>>> df.loc[df["a"] == 1, "c"].iloc[0:2] = 2
>>> df
a b c
0 1 2 1
1 1 3 2
2 1 1 3
3 1 4 4
4 2 5 5
5 2 6 6
6 2 7 7
7 2 2 8
第二行的代码不起作用,因为 iloc 设置了一个副本,所以原始数据帧没有被修改。我该怎么做?
最佳答案
一个肮脏的方式是:
df.loc[df[df['a'] == 1][:2].index, 'c'] = 2
关于python - 在 Pandas 中一起使用 loc 和 iloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37911147/