Произведение двух строковых массивов - PullRequest
3 голосов
/ 27 апреля 2020

У меня есть массив:

a1=['a','b','c']

и другой:

a2=['d','e','f']

Как мне создать DataFrame, содержащий все элементы в a2 для каждого элемента в a1 в Python?

Ожидаемый результат:

a d
a e
a f
b d
b e
b f
c d
c e
c f

Ответы [ 4 ]

3 голосов
/ 27 апреля 2020

Вы можете использовать product из itertools

In [1]: from itertools import product

In [2]: a1=['a','b','c']

In [3]: a2=['d','e','f']

In [4]: list(product(a1, a2))
Out[4]:
[('a', 'd'),
 ('a', 'e'),
 ('a', 'f'),
 ('b', 'd'),
 ('b', 'e'),
 ('b', 'f'),
 ('c', 'd'),
 ('c', 'e'),
 ('c', 'f')]

Этот вывод создает итеративный набор кортежей (я применил list для отображения)

1 голос
/ 27 апреля 2020

Чистый pandas раствор:

print (pd.DataFrame(index=pd.MultiIndex.from_product([a1,a2])).reset_index())

  level_0 level_1
0       a       d
1       a       e
2       a       f
3       b       d
4       b       e
5       b       f
6       c       d
7       c       e
8       c       f
1 голос
/ 27 апреля 2020

Вы можете использовать список-понимания

df = pd.DataFrame([(x,y) for x in a1 for y in a2])
df
   0  1
0  a  d
1  a  e
2  a  f
3  b  d
4  b  e
5  b  f
6  c  d
7  c  e
8  c  f
1 голос
/ 27 апреля 2020

Вы можете использовать itertools.product и создать из него DataFrame:

import itertools
import pandas as pd

a1=['a','b','c']
a2=['d','e','f']

df = pd.DataFrame(itertools.product(a1,a2))
print(df)

Вывод:

   0  1
0  a  d
1  a  e
2  a  f
3  b  d
4  b  e
5  b  f
6  c  d
7  c  e
8  c  f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...