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

时间:2020-05-28 16:28:21

标签: python pandas dataframe

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

我的数据框是:

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

我花了很多时间尝试事情,没有运气。 有想法吗?

2 个答案:

答案 0 :(得分:1)

为解决该错误,对作为多维数组的数组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

答案 1 :(得分:0)

您可以将每个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])

这是您的数组1

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

这些分别是您的array2和array3。

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

您将所有三个数组都转换为各自的DataFrames

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

这是由所有三个数组组成的DataFrame

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