объединение групп столбцов с логическими значениями для создания нескольких новых столбцов

#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