Вы можете использовать itertools
, чтобы получить произведение всех столбцов:
import itertools
for col_a, col_b in itertools.product(df.columns, 2):
df[col_a + 'x' + col_b] = df[col_a] * df[col_b]
itertools.product(df.columns, 2)
создает все комбинации столбцов, если взять 2 элемента из df.columns.
Редактировать
Если рассмотреть вашу проблему более подробно, я думаю, вам лучше использовать itertools.combinations
. Это производит не все возможные продукты, но все возможные комбинации.
Пример, предположим, столбцы 'A', 'B', 'C'
itertools.product
производит ('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B ',' B '), (' B ',' C '), (' C ',' A '), (' C ',' B '), (' C ',' C ').
itertools.combinations
производит ('A', 'B'), ('A', 'C'), ('B', 'C')
Следовательно, это будет работать лучше:
import itertools
for col_a, col_b in itertools.combinations(df.columns, 2):
df[col_a + 'x' + col_b] = df[col_a] * df[col_b]