Проблема конкатенации DataFrame - PullRequest
0 голосов
/ 29 января 2020

Сначала я создал два фрейма данных, используя трехмерный список.

import pandas as pd
import numpy as np
list= [[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12], [13,14,15], [16,17,18]],[[19,20,21],[22,23,24], 
[25,26,27]]]
narray = np.array(list)
df = pd.DataFrame.from_records(narray)
df1  = pd.DataFrame.from_records(narray)

Затем я конкатенировал фреймы данных, используя:

frames = [df, df1]
result = pd.concat(frames)

Когда я запускаю приведенный выше код, я получаю нужный объединенный DataFrame. Но когда я пытаюсь сделать то же самое, используя для l oop, я сталкиваюсь с ошибкой.

frames = []
for i in range(2):
    list= [[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12], [13,14,15], [16,17,18]],[[19,20,21],[22,23,24],[25,26,27]]]
    narray = np.array(list)
    df = pd.DataFrame.from_records(narray)
    frames = [frames, df]
result = pd.concat(frames)

Я получаю ошибку:

TypeError: невозможно объединить объект типа ''; действительны только Series и DataFrame ob js

Ответы [ 2 ]

1 голос
/ 29 января 2020

Ваша проблема связана с элементом, добавляемым в список:

frames = []
for i in range(2):
    list= [[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12], [13,14,15], [16,17,18]],[[19,20,21],[22,23,24],[25,26,27]]]
    narray = np.array(list)
    df = pd.DataFrame.from_records(narray)
    frames = [frames, df] # WRONG!
result = pd.concat(frames)

Вместо этого попробуйте заменить frames = [frames, df] на frames += [df] или frames.append(df):

frames = []
for i in range(2):
    list= [[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12], [13,14,15], [16,17,18]],[[19,20,21],[22,23,24],[25,26,27]]]
    narray = np.array(list)
    df = pd.DataFrame.from_records(narray)
    frames += [df] # RIGHT!
result = pd.concat(frames)
1 голос
/ 29 января 2020

Попробуйте это - добавить к кадру вместо назначения

for i in range(2):
    list= [[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12], [13,14,15], [16,17,18]],[[19,20,21], 
          [22,23,24],[25,26,27]]]
    narray = np.array(list)
    df = pd.DataFrame.from_records(narray)
frames.append(df)
result = pd.concat(frames)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...