将不同数据帧中的元素收集到阵列中

2024-04-25 00:10:51 发布

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

我喜欢使用嵌套的数据结构,现在我正在尝试理解如何使用熊猫

这是一个玩具模型:

a=pd.DataFrame({'x':[1,2],'y':[10,20]})
b=pd.DataFrame({'x':[3,4],'y':[30,40]})
c=[a,b]

现在我想得到:

sol=np.array([[[1],[3]],[[2],[4]]])

我想把sol[0]sol[1]都变成:

s0=np.array([item[['x']].ix[0] for item in c])
s1=np.array([item[['x']].ix[1] for item in c])

但为了得到索尔,我会浏览索引,我不认为它是真的Python


Tags: in模型数据结构dataframefornpitemarray
1条回答
网友
1楼 · 发布于 2024-04-25 00:10:51

看起来您只需要来自abx列。您可以使用pd.concat将两个系列(或数据帧)连接成一个新的数据帧:

In [132]: pd.concat([a['x'], b['x']], axis=1)
Out[132]: 
   x  x
0  1  3
1  2  4

[2 rows x 2 columns]

现在,如果需要numpy数组,请使用values attribute

In [133]: pd.concat([a['x'], b['x']], axis=1).values
Out[133]: 
array([[1, 3],
       [2, 4]], dtype=int64)

如果您想要一个与sol形状相同的numpy数组,那么使用reshape method

In [134]: pd.concat([a['x'], b['x']], axis=1).values.reshape(2,2,1)
Out[134]: 
array([[[1],
        [3]],

       [[2],
        [4]]], dtype=int64)

In [136]: np.allclose(pd.concat([a['x'], b['x']], axis=1).values.reshape(2,2,1), sol)
Out[136]: True

相关问题 更多 >