Как объединить данные временных рядов в Python с разными заголовками? - PullRequest
0 голосов
/ 05 февраля 2019

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

from glob import glob

with open('master.csv', 'a') as singleFile:
    for csv in glob('*data.csv'):
        if csv == 'master.csv':
            pass
        else:
            for line in open(csv, 'r'):
                singleFile.write(line)

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

Чтобы проиллюстрировать мою проблему, я приведу пример:

В настоящее время это форматиз первых трех моих CSV-файлов.

current

Мой желаемый результат выглядит следующим образом:

desired

В настоящее время я прибываюпри желаемом выводе путем ручного перемещения по столбцам, есть ли способ, когда объединение моих файлов python может обнаружить новый столбец и переместить его вправо?

Большое спасибо!

1 Ответ

0 голосов
/ 05 февраля 2019

Данные

1.csv:

a,b
1,2
1,2

2.csv:

b,c
2,3
2,3

3.csv:

c,d
3,4
3,4

Панды

Вы можете использовать pandas до load и конвертировать файлы CSV в кадры данных.После этого вы можете объединить их в один фрейм данных, который можно сохранить обратно в файл CSV.

enter image description here

Полный пример:

from glob import glob
import pandas as pd

df = pd.concat([pd.read_csv(f, delimiter=',') for f in glob('*.csv') if not f.startswith('all.csv')], ignore_index=True, sort=False)

print(df)
#      a    b    c    d
# 0  1.0  2.0  NaN  NaN
# 1  1.0  2.0  NaN  NaN
# 2  NaN  NaN  3.0  4.0
# 3  NaN  NaN  3.0  4.0
# 4  NaN  2.0  3.0  NaN
# 5  NaN  2.0  3.0  NaN

df.to_csv('all.csv', index=False)
# a,b,c,d
# 1.0,2.0,,
# 1.0,2.0,,
# ,,3.0,4.0
# ,,3.0,4.0
# ,2.0,3.0,
# ,2.0,3.0,

Источник изображения: https://pandas.pydata.org/pandas-docs/version/0.20/merging.html

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