使用itertuples方法在pandas中编辑单元格的值

4
我希望优化我的代码,所以不想使用双重循环: 我的代码:
    for c in range(0, n-1):
        for l in range(0,n-c-1):
            df2.ix[l,c]=C_back(l,c,df)

我想使用

for x in df.itertuples():

但我不知道如何修改特定单元格的值。谢谢。
2个回答

3
使用iteruples:
        for each in dt.itertuples():
            dt.loc[each.Index, 'column'] = value

2

使用 stack

for mytuple, value in df.stack().iteritems():
    print(mytuple, value)

考虑一下 df
df = pd.DataFrame(np.arange(9).reshape(-1, 3), list('ABC'), list('XYZ'))
df

enter image description here

for mytuple, value in df.stack().iteritems():
    print(mytuple, value)

('A', 'X') 0
('A', 'Y') 1
('A', 'Z') 2
('B', 'X') 3
('B', 'Y') 4
('B', 'Z') 5
('C', 'X') 6
('C', 'Y') 7
('C', 'Z') 8

设置 df 的值

for (i, j), value in df.stack().iteritems():
    df.set_value(i, j, value ** 2)

df

enter image description here


如果我只想设置df的下三角,例如在示例中的(5,7,8),非常感谢! - enden
更加复杂的是,如果我想将单元格值(B,Z)替换为(B,Y)。value * 2和(C,Y)替换为(C,X)。value * 2以及(C,Z)替换为(C���Y)。value * 2。 - enden
1
set_value 不是公共 API - 是的,它们没有被弃用,但不建议使用。 - Jeff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接