Python从多个数据帧创建数据帧,其中一个数据帧具有多个列

2024-10-03 21:37:00 发布

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

我有3个NumPy数据帧,我想将它们与Pandas合并到一个数据帧中,以便执行一些操作

我的数据帧是:

dataframe1,尺寸(38 x 9)

at1 at2 at3 at4 at5 at6 at7 at8 at9
43  -0.333333   91.3333 -4  31.3333 -1.33333    48.6667 59.6667 11.3333
54.5    4   79  0   12  5.5 24  67  43
40.4    0.4 85.6    0.2 31.6    1.6 45  53.4    8.8

dataframe2,尺寸(38 x 1)

at10
43
25
2

dataframe3,尺寸(38 x 1)

at1
-3
5
20

到目前为止,我的代码如下:

df = DataFrame (
            {"reps": array1,
            "labels": array2,
            "weight": array3}
            )

执行此操作时,我收到以下错误消息:

Exception: Data must be 1-dimensional

我花了很多时间尝试,但运气不佳。 有什么想法吗


Tags: 数据numpypandas尺寸dataframe1dataframe2at1at3
2条回答

您可以将每个np(Numpy)数组转换为pd(Pandas)数据帧,然后使用pd.concat进行concat

at1=[43,54.5,40.4]
at2=[-0.33333,4,0.4]
at3=[91.3333,79,85.6]
at4=[-4,0,0.2]
at5=[31.3333,12,31.6]
at6=[1.33333,5.5,1.6]
at7=[48.6667,24,45]
at8=[59.6667,67,53.4]
at9=[11.3333,43,8.8]

base_at=np.array([at1,at2,at3,at4,at5,at6,at7,at8,at9])

这是你的安排

at10=np.array([43,25,2])
at11=np.array([-3,5,20])

这些分别是您的阵列2和阵列3

at10_df=pd.DataFrame(at10).T
base_at_df=pd.DataFrame(base_at)
at11_df=pd.DataFrame(at11).T

您将所有三个阵列转换为各自的数据帧

pd.concat([base_at_df,at10_df,at11_df])

这是由三个阵列组成的数据帧

这是解决方案,我没有更改列的名称,我想您可以从这里开始处理

为了解决这个错误,数组1是一个多维数组,通过将它转换成一个列表来得到每个数组

然后创建一个包含所有数组值的字典,使解决方案更加优雅

import pandas as pd

# get number of columns in multidimensional array 
num_cols = len(array1)

# create column names
array1_col_names = ['reps_' + str(i) for i in range(num_cols)]

# get elements of array 1 and store them in a dictionary
values = dict(zip(col_names, list(array1)))
values.update({'labels': array2, 'weight': array3}) # add other arrays to dictionary

# create dataframe from the dictionary
df = pd.DataFrame(values)

df

相关问题 更多 >