Python создать фрейм данных из нескольких фреймов данных, один из которых имеет несколько столбцов - PullRequest
0 голосов
/ 28 мая 2020

У меня есть 3 NumPy фреймов данных, которые я хочу объединить с Pandas в DataFrame для некоторых действий.

Мои фреймы данных:

dataframe1, size (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, size (38 x 1)

at10
43
25
2

dataframe3, size (38 x 1)

at1
-3
5
20

Мой код пока следующий:

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

Когда я выполняю это, я получаю следующее сообщение об ошибке:

Exception: Data must be 1-dimensional

Я потратил много времени на попытки, но безуспешно. Есть идеи?

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Чтобы решить эту ошибку, массив 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
0 голосов
/ 28 мая 2020

Вы можете преобразовать каждый массив np (Numpy) в pd (Pandas) Dataframe, а затем выполнить concat, используя pd.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, состоящий из всех трех массивов

Вот решение, я не менял имя столбца, думаю, вы справитесь здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...