如果有更清晰的询问方式,我很乐意更改问题的标题。
我想将几个列表转换为数据帧的重复列。不知何故,在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
答案 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