从数组和列表的列表生成数据帧?



我有以下列表和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

尝试使用concatenaterepeat:

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

最新更新