Конкатенировать список данных - PullRequest
0 голосов
/ 09 мая 2019

Это мой фрагмент кода:

import os 
import pandas as pd

path = os.getcwd()
files = os.listdir(path)
df = []

for f in files:
    data = pd.read_csv(f, usecols = [0,1,2,3,4])
    df.append(data)

temp = pd.concat(df)

, где df - список фреймов данных:

0
DataFrame
(1, 5)
1
DataFrame
(7, 5)
2
DataFrame
(5, 5)
3
DataFrame
(10, 5)
4
DataFrame
(1, 5)
5
DataFrame
(2, 5)

Я пытаюсь сложить эти фреймы данных друг под другом и получить одинФрейм данных в качестве вывода.Я пробовал несколько комбинаций из SO Q & A, но, похоже, ни одна из них не работает.Я чувствую, что это легко.Что я делаю неправильно?

1 Ответ

2 голосов
/ 09 мая 2019

Для этой задачи вам не требуется цикл for или понимание списка.Просто выполните:

pd.concat(df)

, где df - список фреймов данных.

Вот пример:

import pandas as pd
import numpy as np

df1 = pd.DataFrame(np.random.randint(0,100,size=(1,5)), columns=list('ABCDE'))
df2 = pd.DataFrame(np.random.randint(0,100,size=(7,5)), columns=list('ABCDE'))
df3 = pd.DataFrame(np.random.randint(0,100,size=(5,5)), columns=list('ABCDE'))
df = [df1, df2, df3]

concatenated = pd.concat(df)

Выход (например):

    A   B   C   D   E
0  10  48  49  84  86
0  29   5  44  20  80
1  80   7   5   9  81
2  35  32  15  42  33
3  59  79  74  80  66
4  48  91  44  33  73
5  52  98  94  44  86
6  70  16  73  25  71
0  52  20  75  34  90
1  92  88  26  35  26
2  54   3  49  70  46
3  24  12  71  69  57
4   3  71  93  58  74

И вы можете использовать .reset_index(drop=True) для сброса индекса, если хотите.

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