我可以创建一个包含2d数组而不是列表的pandas Dataframe 吗?

vyswwuz2  于 2023-05-12  发布在  其他
关注(0)|答案(1)|浏览(91)

我有加速度计/陀螺仪数据--一系列x、y、z加速度值、Angular 值和角速度值--我正试图处理这些数据以生成图表。我有图表的一部分,但我目前处理他们一个参数的时间,并希望做所有的人在一个运行。数据看起来像这样(因空间而截断的系列):

import numpy as np
accel = [[-0.7437,0.1118,-0.6367],
         [-0.7471,0.1162,-0.6338],
         [-0.7437,0.1216,-0.6255]]
angle =  [[169.4366,49.4714,56.9421],
         [169.3762,49.5374,56.8433],
         [169.2828,49.6582,56.7059]]
avelo = [[-0.5493,-0.9766,1.4038],
          [0,-1.4038,0.7935],
          [0.061,-1.0986,0.2441]]

我想将这些添加到一个dataframe中,这样我就可以通过迭代参数的名称来检索它们。然而,我所能找到的所有 Dataframe 示例都是用于创建和访问命名列表(如许多人的年龄,身高,体重)。甚至搜索“create pandas dataframe from multiple numpy arrays”也没有得到我想要的结果。在Perl中,这将很容易作为数组的散列来完成。我在搜索“数组字典”时也遇到了类似的厄运。
我想做的事情在Python中可能吗?如果是这样的话,请有人给我指一个资源或给予一个例子,如何把这些数组以上到一个 Dataframe (或字典),并得到一个参数的系列回来?

9nvpjoqh

9nvpjoqh1#

您可以使用pd.concat将变量转换为DataFrame:

dfs = {
    'accel': pd.DataFrame(accel, columns=list('xyz')),
    'angle': pd.DataFrame(angle, columns=list('xyz')),
    'avelo': pd.DataFrame(avelo, columns=list('xyz'))
}
df = pd.concat(dfs, axis=1)

输出:

>>> df
    accel                     angle                     avelo                
        x       y       z         x        y        z       x       y       z
0 -0.7437  0.1118 -0.6367  169.4366  49.4714  56.9421 -0.5493 -0.9766  1.4038
1 -0.7471  0.1162 -0.6338  169.3762  49.5374  56.8433  0.0000 -1.4038  0.7935
2 -0.7437  0.1216 -0.6255  169.2828  49.6582  56.7059  0.0610 -1.0986  0.2441

您可以使用.transpose.stack.pivot等方法重塑 Dataframe 。
要访问值,请使用Pandas索引:

>>> df[('accel', 'x')]
0   -0.7437
1   -0.7471
2   -0.7437
Name: (accel, x), dtype: float64

>>> df['angle']
          x        y        z
0  169.4366  49.4714  56.9421
1  169.3762  49.5374  56.8433
2  169.2828  49.6582  56.7059

>>> df.loc[:, (slice(None), ['x', 'y'])]
    accel             angle            avelo        
        x       y         x        y       x       y
0 -0.7437  0.1118  169.4366  49.4714 -0.5493 -0.9766
1 -0.7471  0.1162  169.3762  49.5374  0.0000 -1.4038
2 -0.7437  0.1216  169.2828  49.6582  0.0610 -1.0986

阅读更多关于如何使用MultiIndexing

相关问题