Слияние CSV-файлов в каталоге на основе меток времени - PullRequest
0 голосов
/ 18 декабря 2018

В настоящее время я изучаю Python для манипулирования данными.Я написал базовый скрипт для получения двух CSV-файлов и объединения их на основе меток времени и создания другого CSV-файла, который является результатом этих объединенных наборов данных.

Однако я изо всех сил пытался создать способ объединения несколькихCSV-файлы, которые расположены в каталоге на основе меток времени.Это то, что у меня есть в настоящее время:

import pandas as pd
from datetime import datetime

dataset1 = pd.read_csv('ds1.csv', index_col=0, parse_dates=[0])
dataset2 = pd.read_csv('ds2.csv', index_col=0, parse_dates=[0])

combinecsv = pd.merge(dataset1,dataset2, on='DateTime',how = 'outer')
combinecsv.to_csv(r"C:\Users\General\Documents\Data\combined.csv")

validcsv = pd.merge(dataset1,dataset2, on='DateTime',how = 'inner')
validcsv.to_csv(r"C:\Users\General\Documents\Data\valid.csv")

Буду очень признателен за любые советы или указания о том, где можно изучить, как объединить несколько (10+) CSV-файлов на основе меток времени.

Спасибо!

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете перечислить все файлы .csv в каталоге, используя pathlib's Path.glob():

for csv in Path(r'C:\Temp').glob('*.csv'):
    # do something with csv
    pass

Затем вы можете добавить содержимое и столбцы каждого следующего .csv в существующую коллекцию:

from pathlib import Path
import pandas as pd


def add_dataset(old, new, **kwargs):
    if old is None:
        return new
    else:
        return pd.merge(old, new, **kwargs)


combined_csv = None
valid_csv = None

for csv in Path(r'C:\Temp').glob('*.csv'):
    dataset = pd.read_csv(csv, index_col=0, parse_dates=[0])
    combined_csv = add_dataset(combined_csv, dataset, on='DateTime', how='outer')
    valid_csv = add_dataset(valid_csv, dataset, on='DateTime', how='inner')

combined_csv.to_csv(r'C:\Temp\combined.csv')
valid_csv.to_csv(r'C:\Temp\valid.csv')

Обратите внимание, что запуск сценария дважды будет включать выходные данные в качестве входных данных - рекомендуется их записать в другом месте.

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