熊猫,更改数据框中的特定单元格

时间:2020-05-10 17:14:54

标签: python pandas

如何更改数据框中的特定单元格?

问题:

a new row is adding,instead of modifying the old data

当我尝试更改它时,

d1.at[0, 'high'] = 10

1 个答案:

答案 0 :(得分:0)

假设您的DataFrame( d1 )包含以下内容:

   high  low
1     1    2
2     3    4
3     5    6

请注意,索引不包含 0

然后,当您运行d1.at[0, 'high'] = 10时, Pandas 的运行方式如下:

  • 尝试找到索引为 0 的行。
  • 如果所讨论的数据框不包含此类行,请添加 具有此类索引的行,并且所有列最初都设置为 NaN
  • 在(刚添加的)行中,将 high 列中的值设置为 10
  • 尚未设置其他列(在这种情况下仅是 low ),因此它们仍然 有 NaN
  • 一个副作用是,两个列均为 int 类型。但是,即使 将其任何元素的初始,临时设置为 NaN 会强制这些 列到 float

因此在上述指令之后 d1 包含:

   high  low
1   1.0  2.0
2   3.0  4.0
3   5.0  6.0
0  10.0  NaN

然后让我们测试另一种情况:

d1 是否包含索引为 0 的行:

   high  low
1     1    2
2     3    4
3     5    6
0     7    8

现在,如果您运行d1.at[0, 'high'] = 10,则会发现“所需”行 (未插入)并且已设置此行中的 high 列 到 10 (这些行中的其他列保留其初始值)。

之后, d1 包含:

   high  low
1     1    2
2     3    4
3     5    6
0    10    8

如此:

  • 熊猫 已更新该列,
  • 两个列都保留其初始类型。