将两个Pandas数据帧组合到三维np.array

问题描述 投票:0回答:1

我需要将两个熊猫DataFrame合并为三维np.array。例如这些DataFrames

df1 = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4,5,6]})

df2 = pd.DataFrame({'col1': [10, 20, 30], 'col2': [40,50,60]})

应简化为nd.array [[[1,10],[2,20],[3,30]],[[4,40],[5,50],[6,60]]]

我最初的想法是使用以下公式压缩DataFrame:

dfnew=df1.copy()

for i in range(len(dfnew.columns)):

dfnew[dfnew.columns[i]]=list(map(list, zip(df1.iloc[:,i],df2.iloc[:,i])))

Unfourtunaly,这不起作用,因为它创建了一个包含列表的二维数组:

array([[list([1, 10]), list([4, 40])],
       [list([2, 20]), list([5, 50])],
       [list([3, 30]), list([6, 60])]], dtype=object)

np.array(dfnew).shape -> (3,2)

由于数组的形状不是三维的,因此在以下过程中无法使用数组。

您能否帮助我将二维数组转换为三维数组,或者您有其他解决此问题的方法。

非常感谢!

python arrays pandas numpy dataframe
1个回答
0
投票

这应该可以解决问题

arr1 = df1.to_numpy()
arr2 = df2.to_numpy()
result = np.array([np.transpose(i) for i in zip(arr1.T,arr2.T)])
© www.soinside.com 2019 - 2024. All rights reserved.