Вставить и переименовать столбцы в нескольких файлах CSV и объединить в один CSV - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть много csvs, которые выглядят так:

csv output 1

Я хочу переименовать имена столбцов, потому что они слишком длинные, и вставить новый столбец с именем Company с такими же значениями (например, aapl (тикер для Apple)). Вот код, как я это сделал:

data = pd.read_csv('aapl.csv', index_col=0)
data.insert(0, 'Company', 'aapl')
data.rename(columns={'Unnamed: 0': 'Company', 'Working Capital / Total Assets':'WC/TA', 'Retained Earnings / Total Assets': 'RE/TA', 'EBIT / Total Assets':'EB/TA','Current Market Cap / Total Liabilites':'MC/TL', 'Revenue / Total Assets':'RV/TA','Net Income / Total Assets (ROA)':'NI/TA', 'Total Liabilites / Total Assets':'TL/TA', 'Current Assets / Current Liabilites':'CA/CL'})
data.to_csv('aapl.csv')

и я получаю

enter image description here

Дело в том, что у меня есть 278 других компаний в том же формате csv (imb.csv, ase.csv, wire.csv и т. Д.) , и я хотел бы переименовать / вставить столбцы для всех них в так же. Наконец, мне нужно объединить все эти CSV-файлы в один CSV-файл (именно поэтому необходим новый столбец "Компания").

У меня вопрос, как создать новый столбец (имя: компания) и заполнить его именем файла.

Например: load ibm .csv -> переименовать столбцы -> добавить новый столбец (Company) -> вставить значение ibm (имя файла / тикер) в столбце Company -> export to csv.

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете прочитать каждый файл в понятном вам формате, добавить ключ по имени файла и последний concat вместе:

import glob, os

files = glob.glob('files/*.csv')

d = {'Working Capital / Total Assets':'WC/TA', 
     'Retained Earnings / Total Assets': 'RE/TA', 
     'EBIT / Total Assets':'EB/TA',
     'Current Market Cap / Total Liabilites':'MC/TL',
     'Revenue / Total Assets':'RV/TA',
     'Net Income / Total Assets (ROA)':'NI/TA',
     'Total Liabilites / Total Assets':'TL/TA',
     'Current Assets / Current Liabilites':'CA/CL'}

dfs = {os.path.basename(fp).split('.')[0]: pd.read_csv(fp).rename(columns=d) for fp in files}
df = pd.concat(dfs).reset_index(level=1,  drop=True).rename_axis('company').reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...