Есть ли способ объединить CSV-файлы непосредственно при импорте в pandas? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть 35 CSV-файлов, и я хочу объединить все файлы вместе в столбце «Id». Есть ли способ объединить все? Я могу сделать это вручную, загрузив каждый файл и указав в datafame

pd.merge(df_c1, df_c2, on='uuid')

Но интересно, есть ли какой-нибудь умный способ?

1 Ответ

1 голос
/ 24 марта 2020

кредит @ cs95 для Pandas Слияние 101

### read / create data frames
df_c1 = pd.DataFrame({'uuid': ['A', 'B', 'C', 'D'], 'valueA': np.random.randn(4)})    
df_c2 = pd.DataFrame({'uuid': ['B', 'D', 'E', 'F'], 'valueB': np.random.randn(4)})
df_c3 = pd.DataFrame({'uuid': ['D', 'E', 'J', 'C'], 'valueC': np.ones(4)})

### list of data frames
dfs = [df_c1, df_c2, df_c3]

Затем можно использовать concat:

pd.concat([df.set_index('uuid') for df in dfs], axis = 1) #.reset_index() could be used to make uuid a column again

Наконец, Я мог бы добавить к решению, читая в нескольких CSV что-то вроде этого:

import pandas as pd 
import glob
import os

df_list = []

# note: this method assumes all of your csv files are in a single folder
path = '<insert your file path here>'

all_files = glob.glob(os.path.join(path, '*.csv'))

for file in all_files:
    df1 = pd.read_csv(file)
    df_list.append(df1)

concatenated_df = pd.concat([df for df in df_list], axis = 1) #note use axis = 0 to append row wise
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...