Объединение нескольких столбцов с разными именами в один гигантский фрейм данных - PullRequest
1 голос
/ 09 мая 2019

У меня есть несколько фреймов данных (с одинаковыми # столбцами, но разными именами). Я пытаюсь создать один фрейм данных со строками, расположенными друг под другом. Меня не волнуют названия столбцов (я всегда могу переименовать их позже). Я видел разные ссылки SO, но они не решают эту проблему полностью.

Примечание. У меня 21 кадр данных, и его масштабируемость важна. Я смотрел на это

enter image description here

Как я могу получить df:

df = []

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

Ответы [ 3 ]

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

Предполагая, что ваши DataFrames хранятся в некотором списке df_l:

Переименуйте столбцы и введите:

df_l = [df1, df2, df3]
for df in df_l:
    df.columns = df_l[0].columns  # Just chose any DataFrame

pd.concat(df_l)  # Columns named with above DataFrame
                 # Index is preserved

Или создайте новый DataFrame:

pd.DataFrame(np.vstack([df.to_numpy() for df in df_l]))  # Columns are RangeIndex
                                                         # Index is RangeIndex
1 голос
/ 10 мая 2019

Я сделаю это в начале, добавив skiprows=1

names=[0,1,2,3,4]# what every you want to call them ..

pd.concat([pd.read_csv(f, usecols = [0,1,2,3,4],skiprows=1,names=[0,1,2,3,4]) for f in files])
0 голосов
/ 09 мая 2019

Как только вы поместите все фреймы данных в список, попробуйте этот код.

import pandas as pd
df = [df1, df2, df3]
result = pd.DataFrame(columns=df1.columns)
for df in df:
    result = pd.concat([result,df.rename(columns=df1.columns)], ignore_index=True)
...