Объединить несколько .csv в один csv в python - PullRequest
0 голосов
/ 04 августа 2020

Добрый вечер,

Итак, у меня есть огромное количество файлов .csv, которые я хочу изменить в одном гигантском CSV, прежде чем читать его с помощью pandas, или напрямую создать df со всеми .csv в Это. Все .csvs имеют два столбца: «временная метка» и «хранение». Теперь я хочу объединить их в столбце «timestamp», если они совпадают друг с другом, и создать новый столбец для каждого столбца «холдингов». Пока что я произвел это:

import os
import glob
import pandas as pd

os.chdir("C/USer....")
extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]

dfs = [pd.read_csv(f, index_col=[0], parse_dates=[0])
        for f in os.listdir(os.getcwd()) if f.endswith('csv')]

Результатом является список с dfs. Как мне теперь объединить их в столбце «отметка времени»? Я уже пробовал concate и merge, но он всегда помещает их в один столбец.

1 Ответ

1 голос
/ 05 августа 2020

То, что вы ищете, - это внешнее соединение между фреймами данных. Поскольку функция pandas merge работает только между двумя фреймами данных, нам нужно l oop для каждого фрейма данных и объединить их по отдельности. Мы можем использовать итератор reduce из functools, чтобы сделать это чисто в одной строке:

import pandas as pd
from functools import reduce

df_merged = reduce(lambda  left,right: pd.merge(left,right,on=['timestamp'],
                                        how='outer'), dfs)

Используйте аргумент suffixes в функции merge, чтобы очистить заголовки столбцов.

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