我有一个类似于这个和这个的问题。区别在于我必须按位置选择行,因为我不知道索引。
我想做一些类似于df.iloc[0,'COL_NAME']=x
,但iloc不允许这种访问。如果我执行df.iloc[0]['COL_NAME']=x
,则会出现关于链接索引的警告。
我想在这里补充的一点是,数据帧上的at
函数要快得多,特别是当您对单个(而不是切片)值进行大量赋值时。
df.at[index, 'col_name'] = x
以我的经验,我已经得到了20倍的加速。这是一篇西班牙文的评论,但仍然给人留下了一个印象。
对于混合位置和索引,请使用.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