#python #pandas #numpy #dataframe #list-comprehension
#python #pandas #numpy #фрейм данных #список-понимание
Вопрос:
Мне было интересно, как я могу создавать новые столбцы на основе старых, умножая две их группы в моем фрейме данных. Итак, если у меня есть [A, B] и [X, Y]:
A B X Y
0 True False True False
Теперь я хочу, чтобы это привело к появлению 4 дополнительных столбцов, из которых только тот, который имеет оба значения true, является true:
A B X Y AX BX AY BY
0 True False True False True False False False
В моей ситуации группы больше, поэтому я ищу решение, которое можно использовать, используя два списка заголовков столбцов [A, B] и [X, Y]. Я пробовал понимание списка, но я не могу заставить его работать 🙁
Ответ №1:
Используйте itertools.product
, чтобы получить декартово произведение имен столбцов, затем используйте Series.mul
понимание списка для создания соответствующих продуктов столбцов, наконец, используйте pd.concat
для объединения этих продуктов с df
:
from itertools import product
l1, l2 = ['A', 'B'], ['X', 'Y']
c = [df[a].mul(df[b]).rename(''.join([a, b])) for a, b in product(l1, l2)]
df = pd.concat([df] c, axis=1)
Результат:
A B X Y AX AY BX BY
0 True False True False True False False False
Комментарии:
1. Удивительно, как быстро вы это придумали. Спасибо! Я мог бы использовать это довольно часто!
2. Счастливого кодирования 🙂 @Charles