两个字符串数组的乘积

时间:2020-04-27 15:57:06

标签: python pandas numpy

我有一个数组:

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

和另一个:

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

如何为Python中a1中的每个元素创建一个包含a2中所有元素的DataFrame?

预期输出:

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

4 个答案:

答案 0 :(得分:3)

您可以使用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 :(得分:1)

您可以使用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

答案 2 :(得分:1)

您可以使用list-comprehensions

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

答案 3 :(得分:1)

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