当前位置: 首页 > 面试题库 >

使用索引为pandas DataFrame中的特定单元格设置值

司空宣
2023-03-14
问题内容

我创建了一个Pandas DataFrame

df = DataFrame(index=['A','B','C'], columns=['x','y'])

并得到这个

    y
NaN NaN
B NaN NaN
Na

然后,我想为特定的单元格赋值,例如行“ C”和列“ x”。我期望得到这样的结果:

    y
NaN NaN
B NaN NaN
C 10 NaN

使用此代码:

df.xs('C')['x'] = 10

但内容df没有改变。再次仅NaNDataFrame中。

有什么建议?


问题答案:

RukTech的答案,df.set_value('C', 'x', 10)远比我在下面建议的选项要快得多。但是,已将其淘汰。

展望未来,推荐的方法是.iat/.at

为什么df.xs('C')['x']=10不起作用:

df.xs('C')默认情况下,返回带有数据副本的新数据框,因此

df.xs('C')['x']=10

仅修改此新数据框。

df['x']返回df数据框的视图,因此

df['x']['C'] = 10

修改df自己。

警告:有时很难预测操作是否返回副本或视图。因此,文档建议避免使用“链接索引”进行赋值

所以推荐的替代方法是

df.at['C', 'x'] = 10

这不修改df

In [18]: %timeit df.set_value('C', 'x', 10)
100000 loops, best of 3: 2.9 µs per loop

In [20]: %timeit df['x']['C'] = 10
100000 loops, best of 3: 6.31 µs per loop

In [81]: %timeit df.at['C', 'x'] = 10
100000 loops, best of 3: 9.2 µs per loop


 类似资料:
  • 拿到这个了 然后我要为特定单元格赋值,例如为行“C”和列“X”赋值。我已经料到会有这样的结果: 使用此代码:

  • 问题内容: 我也有类似的问题,这个。区别在于我必须按位置选择行,因为我不知道索引。 我想做类似的事情,但是iloc不允许这种访问。如果执行此操作,则会出现有关链接索引的警告。 问题答案: 对于混合位置和索引,请使用。但是您需要确保索引不是整数,否则会引起混乱。 更新: 或者,尝试 例:

  • 我有一个类似于这个和这个的问题。区别在于我必须按位置选择行,因为我不知道索引。 我想做一些类似于,但iloc不允许这种访问。如果我执行,则会出现关于链接索引的警告。

  • 我正在使用JavaApachePOI生成excel,我只需要美化它(带边框) 这是我生成excel的一些代码

  • 我只想在假设有一个值列表的单元格中添加一个JComboBox。下面是我的代码,但它在列中的所有单元格中添加了组合框。让我知道我的代码中缺少了什么,以便只在选定的单元格上设置组合框。

  • 我正在使用google电子表格API v4 for java。 我的电子表格看起来像这样- 我想查找带有用户“User2”和时间银行(空值)的行索引。之后,我想使用此行索引在该行中添加时间值。是否可以在不知道范围或索引的情况下逐行搜索单元格值? 在上面的示例中,当它与条件(User='User2'和Time='')匹配时,它应该只返回最后一行索引。甚至更好的是,是否存在查找和替换API,它将查找行