当前位置: 首页 > 知识库问答 >
问题:

使用iloc设置数据帧中特定单元格的值

阮鸿煊
2023-03-14

我有一个类似于这个和这个的问题。区别在于我必须按位置选择行,因为我不知道索引。

我想做一些类似于df.iloc[0,'COL_NAME']=x,但iloc不允许这种访问。如果我执行df.iloc[0]['COL_NAME']=x,则会出现关于链接索引的警告。

共有3个答案

令狐宜民
2023-03-14

如果你知道这个位置,为什么不直接从中获取索引呢?

然后使用.loc

df.loc[index, 'COL_NAME'] = x
庞乐池
2023-03-14

我想在这里补充的一点是,数据帧上的at函数要快得多,特别是当您对单个(而不是切片)值进行大量赋值时。

df.at[index, 'col_name'] = x

以我的经验,我已经得到了20倍的加速。这是一篇西班牙文的评论,但仍然给人留下了一个印象。

华项明
2023-03-14

对于混合位置和索引,请使用.ix。但您需要确保索引不是整数,否则会造成混乱。

df.ix[0, 'COL_NAME'] = x

或者,试试看

df.iloc[0, df.columns.get_loc('COL_NAME')] = x

例子:

import pandas as pd
import numpy as np

# your data
# ========================
np.random.seed(0)
df = pd.DataFrame(np.random.randn(10, 2), columns=['col1', 'col2'], index=np.random.randint(1,100,10)).sort_index()

print(df)


      col1    col2
10  1.7641  0.4002
24  0.1440  1.4543
29  0.3131 -0.8541
32  0.9501 -0.1514
33  1.8676 -0.9773
36  0.7610  0.1217
56  1.4941 -0.2052
58  0.9787  2.2409
75 -0.1032  0.4106
76  0.4439  0.3337

# .iloc with get_loc
# ===================================
df.iloc[0, df.columns.get_loc('col2')] = 100

df

      col1      col2
10  1.7641  100.0000
24  0.1440    1.4543
29  0.3131   -0.8541
32  0.9501   -0.1514
33  1.8676   -0.9773
36  0.7610    0.1217
56  1.4941   -0.2052
58  0.9787    2.2409
75 -0.1032    0.4106
76  0.4439    0.3337
 类似资料:
  • 问题内容: 我也有类似的问题,这个。区别在于我必须按位置选择行,因为我不知道索引。 我想做类似的事情,但是iloc不允许这种访问。如果执行此操作,则会出现有关链接索引的警告。 问题答案: 对于混合位置和索引,请使用。但是您需要确保索引不是整数,否则会引起混乱。 更新: 或者,尝试 例:

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

  • 如何在此数据帧中选择特定单元格?,此数据帧中的索引是FISH列 我的预期输出是:例如

  • 问题内容: 我创建了一个 并得到这个 然后,我想为特定的单元格赋值,例如行“ C”和列“ x”。我期望得到这样的结果: 使用此代码: 但内容df没有改变。再次仅在中。 有什么建议? 问题答案: RukTech的答案,远比我在下面建议的选项要快得多。但是,已将其淘汰。 展望未来,推荐的方法是。 为什么不起作用: 默认情况下,返回带有数据副本的新数据框,因此 仅修改此新数据框。 返回数据框的视图,因此

  • 我在R中有一个数据帧,我想根据两个列表中的行和列的特定匹配来设置值。 以下是我必须遵循的流程。我有一个数据框,如下所示 我有一个函数,它将列名作为输入,并返回一个与该列名关联的值。例如:一些_函数(“test.var1.t1”)可能返回10的值。 我有一些行名和列名的列表。我需要检查列表中的每个行名称和列名,将它们匹配在一起,计算匹配列的函数,并将值发布到相应的单元格中的数据框中。例如 行名称列表

  • 我想清理我的数据框的源列。最后我只想保留名字后面的部分。 最好的方法是什么?例如: 第1行第1列:{'id':'rtl nieuws','name':'rtl nieuws'} 第2行,第1列:{'id':'无','name':'www.ad.nl'} 预期结果: 第1行第1列:RTL Nieuws 第2行,第1列:www.ad.nl