python - 如何将嵌套数组中的每个数组转换为数据框中的行?
问题描述
我想将嵌套数组中的每个单独的数组转换为数据框中的每一行。例如:嵌套数组示例如下。如何在数据框中的行中创建 [[...]] 内的每个数字?有许多嵌套数组,如下所示。任何帮助,将不胜感激。谢谢你。只是为了让事情更容易,我想将每个数组创建为数据框中的行。第一个数组的示例需要在数据框中像这样布置 * -0.14091441, 0.02556057, 0.10425788, ..., -0.03699904, 0.00503982, 0.08761989 到目前为止,我已经尝试过:
pd.concat([pd.DataFrame(arrays_list[i][0]) for i in range(len(arrays_list))]).reset_index(drop=False)
arrays_list 是我的嵌套数组。
[array([[[-0.14091441, 0.02556057, 0.10425788, ..., -0.03699904,
0.00503982, 0.08761989]],
[[-0.16227441, 0.03150389, 0.06440173, ..., -0.10543424,
0.05987305, 0.04117104]],
[[-0.11423473, 0.03741207, 0.0783961 , ..., -0.16773996,
0.06566695, 0.0683976 ]],
...,
[[-0.13789459, 0.05840103, 0.09803487, ..., -0.09256409,
0.01833008, 0.08413954]],
[[-0.12652887, 0.03683193, 0.06100509, ..., -0.06188103,
0.00915053, 0.09518969]],
[[-0.19781192, 0.05750425, 0.14811654, ..., -0.10550601,
0.05405622, 0.13771409]]]),
array([[[-0.0375578 , 0.16006446, 0.07978896, ..., -0.0883253 ,
0.0057608 , 0.07953031]],
[[ 0.00282089, 0.18854009, 0.01686837, ..., -0.02981209,
-0.01220972, 0.02810074]],
[[ 0.0333602 , 0.21895081, 0.05255894, ..., -0.01882036,
-0.03316848, 0.02506595]],
...,
[[-0.02498044, 0.17067145, 0.03956907, ..., -0.00617604,
0.01254308, 0.03375499]],
[[ 0.0333602 , 0.21895081, 0.05255894, ..., -0.01882036,
-0.03316848, 0.02506595]],
[[ 0.01105822, 0.20526624, 0.05087842, ..., -0.0442748 ,
-0.08184794, 0.04356682]]]),
array([[[-1.16298698e-01, 6.60857707e-02, 4.37349118e-02, ...,
5.65935597e-02, 1.17720775e-01, 4.68457118e-02]],
[[-1.70329705e-01, 7.15664029e-02, 2.13463139e-02, ...,
8.40441436e-02, 3.38792875e-02, -9.66352411e-04]],
[[-1.38925180e-01, 6.48617744e-02, 7.50765130e-02, ...,
3.60708833e-02, 9.37591046e-02, 3.88324559e-02]],
...,
[[-1.38925180e-01, 6.48617744e-02, 7.50765130e-02, ...,
3.60708833e-02, 9.37591046e-02, 3.88324559e-02]],
[[-1.55961111e-01, 7.59401619e-02, 3.65645029e-02, ...,
9.78165418e-02, 9.37420279e-02, 5.14532737e-02]],
[[-1.19004108e-01, 6.59743100e-02, 7.72421211e-02, ...,
4.89978008e-02, 1.33881345e-04, 2.18758285e-02]]])]
出于这个问题的目的,这里是一个类似的 mre。
from numpy.random import default_rng
rng = default_rng()
a = rng.integers(0,5,(6,1,6))
b = rng.integers(0,5,(6,1,6))
c = rng.integers(0,5,(6,1,6))
# or just
# np.random.randint(0,5,(6,1,6))
obj = [a,b,c]
解决方案
以您提供的可重现示例为例,并假设您想要一个数据框作为结果(a、b 和 c 具有相同的形状)。
我将首先使用numpy.stack()将数组列表中的所有数组作为一个数组垂直堆叠。
然后我会将形状 1 的中间尺寸切掉。
然后我调用pandas.DataFrame()构造函数,你应该得到你的结果。
df = pd.DataFrame(np.vstack(obj)[:,0,:])
推荐阅读
- python - 用于异常检测的 LSTM 自动编码器
- c# - 在 Entity Framework 6 中合并实体
- symfony - Postgres 视图上的 Symfony 实体
- php - 创建父子关系 JSON 树
- node.js - 使用nodejs的方法更新sequelize with transaction
- java - 如何获取列表,将其收集到地图中,然后使用 Java Streams 进行排序?
- react-native - 如何限制 TextInput 中可以使用的符号?
- powerbi - Power BI:URL 过滤器中的嵌套 AND 语句
- mysql - MYSQL 解释'使用:where; 使用临时的;使用文件排序'
- tensorflow - 如何运行张量流 GPU