我有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
我花了很多时间尝试事情,没有运气。 有想法吗?
答案 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
这是解决方案,我没有更改列的名称,我想您可以从这里处理。