python – 如何将来自许多数据帧的数据组合成一个数据帧,并将数组作为数据值

如果我有许多panda数据帧,具有相同的索引结构,我想创建一个具有相同索引结构的数据帧,但数据值是np.arrays(实际上我想要np.matrix.)

合并似乎可以很好地完成简单的操作df1 df2添加了元素,但np.array((df1,df2))根本不能做我想要的.

pandas有没有这样做的方法而不用逐个元素重建整个对象元素?

例如.如果我有

df1 =       col1    col2
      1        1       2
      2        3       4
df2 =       col1    col2
      1        5       6
      2        7       8

并希望

df2 =       col1    col2
      1    [1,5]   [2,6]
      2    [3,7]   [4,8]
最佳答案
我会使用Panel结构来执行此操作:

In [11]: p = pd.Panel({'df1': df1, 'df2': df2})

In [12]: p['df1']
Out[12]:
   col1  col2
1     1     2
2     3     4

你可以在主轴上申请:

In [13]: p.apply(np.sum, axis='major')  # use linalg function here instead of np.sum
Out[13]:
      df1  df2
col1    4   12
col2    6   14

注意:对于每个(df,col)对,您正在应用numpy数组:

In [21]: def f(x):
              print(repr(x))
              return 1

In [22]: p.apply(f, 'major')
array([1, 3])
array([2, 4])
array([5, 7])
array([6, 8])
Out[22]:
      df1  df2
col1    1    1
col2    1    1

您可以选择另一个numpy / linalg函数(或创建自己的函数).

更新:实际上这不是你想要的,你必须使用项目轴:

In [31]: p.apply(f, 'items')
array([1, 5])
array([2, 6])
array([3, 7])
array([4, 8])
Out[31]:
   col1  col2
1     1     1
2     1     1

转载注明原文:python – 如何将来自许多数据帧的数据组合成一个数据帧,并将数组作为数据值 - 代码日志