如何将来自多个数据帧的数据组合成一个以数组作为数据值的数据帧

2024-04-23 11:10:01 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有许多panda数据帧,具有相同的索引结构,我想创建一个具有相同索引结构的数据帧,但是数据值是np.数组(其实我想np矩阵。)

对于简单的操作,合并似乎做得很好df1+df2添加了元素,但是np.数组(df1,df2)根本做不到我想要的。在

熊猫有没有一种方法可以做到这一点而不需要逐个元素地重建整个对象?在

例如,如果我有

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

想要

^{pr2}$

Tags: 数据对象方法元素np矩阵数组结构
1条回答
网友
1楼 · 发布于 2024-04-23 11:10:01

我将使用面板结构来实现这一点:

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

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

你可以在长轴上做一个应用程序:

^{pr2}$

注意:对于每个(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

相关问题 更多 >