我正在尝试更新此选择器中的值(在循环中):
df.loc[df['wsid']==w,col_name].iloc[int(lag)]
重建一个例子(在循环内),将是:
df.loc[df['wsid']==329,'stp_1'].iloc[0]
我可以打印该值,但我不知道如何更新它:
df.loc[df['wsid']==329,'stp_1'].iloc[0] = 0 ??
答案 0 :(得分:1)
这应该有效:
idx = df.loc[df['wsid']==w].index
df.loc[df.loc[idx, 'wsid'].index[0], 'wsid'] = 0
<强>解释强>
.loc
访问器可用于切片和设置数据帧的各个部分。df.loc[index_labels, column_name]
形式的输入。有关详细信息,请参阅Selection by Label。答案 1 :(得分:0)
您似乎只想根据某些条件更新数据框中的某个单元格。
这是设置 -
df = pd.DataFrame({'col' : np.arange(3, 13)})
df
col
0 3
1 4
2 5
3 6
4 7
5 8
6 9
7 10
8 11
9 12
现在,假设您要查找可被3整除的记录。但是,您只想更新与此条件匹配的第一个项目。在这种情况下,您可以使用idxmax
。
m = df.col.mod(3).eq(0)
df.loc[m.idxmax(), 'col'] = 0
df
col
0 0 # first item matching condition updated
1 4
2 5
3 6
4 7
5 8
6 9
7 10
8 11
9 12
另一方面,如果它是第一个索引之外的任何东西,你需要更多一些参与。例如,在符合条件的第三行中。
i = 3
df.loc[m.mask(~m).dropna().index[i], 'col'] = 0
df
col
0 3
1 4
2 5
3 6
4 7
5 8
6 9
7 10
8 11
9 0 # third item matching condition updated