我有以下列表和numpy数组列表:
x = [np.array([5.50000002, 6.69999989]),
np.array([4.83736559, 7. ]),
np.array([0.44784402, 1.49999997, 4.18910619]),
np.array([0.1 , 2.30000004, 3.30995852])]
y = [2, 3, 4, 5]
我想生成如下格式的pandas数据框架:
df =
x y
5.50000002 2
6.69999989 2
4.83736559 3
7 3
0.44784402 4
1.49999997 4
4.18910619 4
0.1 5
2.30000004 5
3.30995852 5
当x和y都很大的时候,最快的方法是什么?
让我们试试explode
out = pd.DataFrame({'x':x,'y':y}).explode('x')
Out[17]:
x y
0 5.5 2
0 6.7 2
1 4.83737 3
1 7 3
2 0.447844 4
2 1.5 4
2 4.18911 4
3 0.1 5
3 2.3 5
3 3.30996 5
尝试使用concatenate
和repeat
:
pd.DataFrame({'x':np.concatenate(x),
'y':np.repeat(y,[len(a) for a in x])})
输出:
x y
0 5.500000 2
1 6.700000 2
2 4.837366 3
3 7.000000 3
4 0.447844 4
5 1.500000 4
6 4.189106 4
7 0.100000 5
8 2.300000 5
9 3.309959 5