我有很多类似这样的csv:
我想重命名列名称,因为它们太长了,并要插入具有相同值(例如 aapl (Apple的代号))的名为 Company 的新列。这是我的代码:
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')
我得到
问题是,我有278个其他公司的csv格式为(imb.csv,ase.csv,wire.csv等) ,我想为所有这些公司重命名/插入列以同样的方式。最后,我需要将所有这些csv文件合并到一个csv中(这就是为什么需要新列“ Company”的原因)。
我的问题是,如何创建新列(名称:Company)并用文件名填充它。
例如:装入 ibm .csv->重命名列->添加新列(公司)->插入值 ibm (公司名/代码)在公司列->导出到csv。
答案 0 :(得分:2)
您可以阅读dict理解中的每个文件,按文件名添加密钥,并最后加上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()