Приведенный кадр данных для панд выглядит так:
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6]})
col1 col2
0 1 4
1 2 5
2 3 6
Я хотел бы сделать что-то эквивалентное этому, используя функцию, но не передавая "по значению" или в качестве глобальной переменной весь фрейм данных (он может быть огромным, и тогда он выдаст мне ошибку памяти):
i = -1
for index, row in df.iterrows():
if i < 0:
i = index
continue
c1 = df.loc[i][0] + df.loc[index][0]
c2 = df.loc[i][1] + df.loc[index][1]
df.ix[index, 0] = c1
df.ix[index, 1] = c2
i = index
col1 col2
0 1 4
1 3 9
2 6 15
То есть, я хотел бы иметь функцию, которая выдаст мне предыдущий вывод:
def my_function(two_rows):
row1 = two_rows[0]
row2 = two_rows[1]
c1 = row1[0] + row2[0]
c2 = row1[1] + row2[1]
row2[0] = c1
row2[1] = c2
return row2
df.apply(my_function, axis=1)
df
col1 col2
0 1 4
1 3 9
2 6 15
Есть ли способ сделать это?