我有一个时间戳数组数组,其中每个时间戳数组的长度不同。例如,
[arr1, arr2, arr3....]
arr1 = [0.24, 0.56, 0.77]
arr2 = [0.1, 0.24]
arr3 = [0.6, 0.7, 0.72, 0.88]
输出应如下所示:
NaN, 0.24, 0.56, Nan, Nan, Nan, 0.77, Nan
0.1, 0.24, Nan, Nan, Nan, Nan, Nan, Nan
Nan, Nan, Nan, 0.6, 0.7, 0.72, NaN, Nan
如何继续将所有这些数组合并成一个二维矩阵?另一个注意事项是每个单独的数组
(arr1, arr2, ..)
的大小都非常大(数万)。
我感觉
pandas merge
功能可以使用,但我不知道如何进行。
这是使用 pandas 的方法:
arrs = [arr1,arr2,arr3]
# convert to series
series = [pd.Series(arr,index=arr) for arr in arrs]
# concat with reindex
pd.concat(series, axis=1)
输出:
0 1 2
0.10 NaN 0.10 NaN
0.24 0.24 0.24 NaN
0.56 0.56 NaN NaN
0.60 NaN NaN 0.60
0.70 NaN NaN 0.70
0.72 NaN NaN 0.72
0.77 0.77 NaN NaN
0.88 NaN NaN 0.88
arr1 = [0.24, 0.56, 0.77]
arr2 = [0.1, 0.24]
arr3 = [0.6, 0.7, 0.72, 0.88]
list2=[arr1, arr2, arr3]
ss1=pd.Series(pd.DataFrame(list2).to_numpy().reshape(-1)).dropna().drop_duplicates().sort_values()
pd.Series(list2).apply(lambda x:ss1.where(lambda ss:ss.isin(x)))
4 0 1 8 9 10 2 11
0 NaN 0.24 0.56 NaN NaN NaN 0.77 NaN
1 0.1 0.24 NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN 0.6 0.7 0.72 NaN 0.88