我有一个数组:
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
答案 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