python - 在 Pandas 中一起使用 loc 和 iloc

标签 python pandas indexing dataframe

假设我有以下数据框,我想更改 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/

相关文章:

python - 将滚动条放在 Canvas 上的框架上

python - python关键字 "with"是做什么用的?

python - 带有 Python 请求包的 Flask 服务器上的 session 不起作用

python - 从循环中的字符串列表创建新的列名称

python pandas 读取 HTML 表格

elasticsearch - Solr使用索引字段进行半径的空间搜索?

Python将代码页字符数转换为unicode

python - 在 Pandas 中有条件地将整行设置为 NaN/None

mysql - 从 SELECT 语句创建新表时如何向 MySQL 表添加索引?

indexing - 如何列出 etherpad-lite 中的所有焊盘