Как лучше объединить несколько фреймов данных? - PullRequest
1 голос
/ 14 марта 2019

так что у меня есть 36 DataFrame, которые я должен объединить в один DataFrame в этих трех столбцах ['Sensor Sensor', 'Time Instant', 'Measurement']

Итак, вот что я сделал:

mi_pollution_1 = pd.read_csv('/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data/mi_pollution_10273.csv' )
mi_pollution_1.columns= ['Sensor ID' , 'Time Instant' , 'Measurement']
mi_pollution_2 = pd.read_csv('/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data/mi_pollution_10278.csv')
mi_pollution_2.columns= ['Sensor ID' , 'Time Instant' , 'Measurement']
mi_pollution_3 = pd.read_csv('/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data/mi_pollution_10279.csv')
mi_pollution_3.columns= ['Sensor ID' , 'Time Instant' , 'Measurement']

.
.
.
.
mi_pollution_35= pd.read_csv('/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data/mi_pollution_6372.csv')
mi_pollution_35.columns= ['Sensor ID' , 'Time Instant' , 'Measurement']
mi_pollution_36= pd.read_csv('/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data/mi_pollution_6372.csv')
mi_pollution_36.columns= ['Sensor ID' , 'Time Instant' , 'Measurement']

и затем:

 frames = [mi_pollution_1 , mi_pollution_2 ,mi_pollution_3 , mi_pollution_4,
     mi_pollution_5 , mi_pollution_6,mi_pollution_7 , mi_pollution_8,
     mi_pollution_9 , mi_pollution_10,mi_pollution_11 , mi_pollution_12, 
     mi_pollution_13 , mi_pollution_14, mi_pollution_15 , mi_pollution_16,
     mi_pollution_17 , mi_pollution_18 ,mi_pollution_19 , mi_pollution_20,
     mi_pollution_21 , mi_pollution_22,mi_pollution_23 , mi_pollution_24,
     mi_pollution_25 , mi_pollution_26,mi_pollution_27 , mi_pollution_28, 
     mi_pollution_29 , mi_pollution_30, mi_pollution_31 , mi_pollution_32,
     mi_pollution_33 , mi_pollution_34, mi_pollution_35 , mi_pollution_36]

 df_result = pd.merge(frames , on = ['Sensor ID' , 'Time Instant' , 'Measurement'])

Итак, я хотел знать, может ли быть более эффективный и «чище» способ сделать это. Спасибо

1 Ответ

0 голосов
/ 14 марта 2019

Если содержимое вашего файла однородно, и похоже, что оно основано на приведенном выше примере, я думаю, что было бы удобнее сначала загрузить данные в виде списков.

import csv
import pandas as pd

file_name = ['sample_file1.csv', 'sample_file2.csv', 'sample_file3.csv']

content = []
for n in file_name:
    with open(n) as f: 
        reader = csv.reader(f, delimiter=',')
        content += list(reader)[1:] # If the first row contains headers

df = pd.DataFrame(content)
df.columns = ['Sensor ID' , 'Time Instant' , 'Measurement']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...