从多个列表创建扩展/排列的数据框

时间:2020-05-13 22:26:05

标签: python pandas dataframe

如果有更清晰的询问方式,我很乐意更改问题的标题。

我想将几个列表转换为数据帧的重复列。不知何故,在itertools和np.tile之间,我无法获得想要的行为。

输入:

list_1 = [1, 2]
list_2 = [a, b]
list_3 = [A, B]

输出:

col1  col2  col3
1     a     A
1     a     B
1     b     A
1     b     B
2     a     A
2     a     B
2     b     A
2     b     B

2 个答案:

答案 0 :(得分:1)

itertools.product是我认为您要寻找的东西

>>> pd.DataFrame(itertools.product(list_1, list_2, list_3))
   0  1  2
0  1  a  A
1  1  a  B
2  1  b  A
3  1  b  B
4  2  a  A
5  2  a  B
6  2  b  A
7  2  b  B

答案 1 :(得分:0)

不确定使用非常大的列表的效率如何,但这是解决问题的一种可行方法。

list_1 = [1, 2]
list_2 = ['a', 'b']
list_3 = ['A', 'B']
indices = []
values = []

for i in list_1:
    for m in list_2:
        for n in list_3:
            indices.append(i)
            values.append([m,n])

df = pd.DataFrame(data=values, index=indices)
print(df)

输出:

   0  1
1  a  A
1  a  B
1  b  A
1  b  B
2  a  A
2  a  B
2  b  A
2  b  B