Как исправить конкат панды при добавлении двух CSV-файлов - PullRequest
2 голосов
/ 18 апреля 2019

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

Я проверил оба файла, чтобы убедиться, что их столбцы соответствуют друг другу, но когда я выполняю свой код, в одном из моих файлов csv (переменная b), по-видимому, отсутствуют данные в "кроватях Social Care DTOC".столбецЯ также получаю это сообщение после выполнения кода:

"FutureWarning: сортировка, потому что ось без конкатенации не выровнена. Будущая версия панд по умолчанию изменится на не сортировку. Чтобы принять будущее поведение, передайте'sort=True'. Чтобы сохранить текущее поведение и заставить замолчать предупреждение, передайте sort=False "

a=pd.read_csv('https://www.england.nhs.uk/statistics/wp-content/uploads/sites/2/2019/04/MSitDT-FEBRUARY-2019-full-extract-for-publication-td5dtd.csv')

b = pd.read_csv('https://www.england.nhs.uk/statistics/wp-content/uploads/sites/2/2019/03/MSitDT-JANUARY-2019-full-extract-for-publication-5tsrt.csv')

out_put=pd.concat([a,b])

out_put.to_csv( "result.csv", encoding='utf-8-sig')

Я ожидаю файл csv с объединенными строками в том же порядке столбцов и без данных, отсутствующих ни в одном из них.

1 Ответ

2 голосов
/ 18 апреля 2019

Существует несоответствие регистра между заголовками столбцов ... например. "Social Care DTOC Beds" против "Social Care DTOC beds" - обратите внимание на нижний регистр 'b' в 'кроватях'.

Простым решением было бы нормализовать эти заголовки столбцов, используя str.title (или str.lower / str.upper, если вы предпочитаете):

a=pd.read_csv('https://www.england.nhs.uk/statistics/wp-content/uploads/sites/2/2019/04/MSitDT-FEBRUARY-2019-full-extract-for-publication-td5dtd.csv')

b = pd.read_csv('https://www.england.nhs.uk/statistics/wp-content/uploads/sites/2/2019/03/MSitDT-JANUARY-2019-full-extract-for-publication-5tsrt.csv')

a.columns = a.columns.str.title()
b.columns = b.columns.str.title()

out_put = pd.concat([a, b])[a.columns]
...