微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐