панды редактируют значение ячейки с помощью itertuples

Я хотел бы ускорить свой код, поэтому мне не нравится использовать double для: моего кода:

    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():

но я не знаю, как изменить конкретное значение ячейки. Благодарность


person enden    schedule 10.11.2016    source источник


Ответы (2)


используйте 1_

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

введите здесь описание изображения

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

введите здесь описание изображения

person piRSquared    schedule 10.11.2016
comment
Что делать, если я хочу установить только нижнюю диагональ моего df, т.е. (5,7,8) в примере, большое спасибо! - person enden; 11.11.2016
comment
более сложно, что, если я хочу заменить значение ячейки (B, Z) на (B, Y). значение * 2 и (C, Y) на (C, X). значение * 2 и (C, Z) на (С,Y).значение*2. - person enden; 11.11.2016
comment
set_value не являются общедоступными API - да, они не устарели, но не рекомендуются к использованию. - person Jeff; 11.11.2016

Использование итерупов:

        for each in dt.itertuples():
            dt.loc[each.Index, 'column'] = value
person Jose    schedule 26.08.2020