【问题标题】:Insert and rename columns in multiple csv files and merging into one csv在多个 csv 文件中插入和重命名列并合并为一个 csv
【发布时间】:2018-09-05 10:06:46
【问题描述】:

我有很多这样的 csv:

我想重命名列名,因为它们太长,并插入名为 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')

我得到了

问题是,我有 278 家其他公司采用相同的 csv 格式(imb.csv、ase.csv、wire.csv 等),我想为所有公司重命名/插入列以同样的方式。最后,我需要将所有这些 csv 文件合并到一个 csv 中(这就是需要新列“公司”的原因)。

我的问题是,如何创建新列(名称:公司)并用文件名填充它。

例如:加载 ibm.csv -> 重命名列 -> 添加新列(公司)-> 插入值 ibm(文件名/股票代码)列公司 -> 导出到 csv。

【问题讨论】:

    标签: pandas


    【解决方案1】:

    您可以在字典理解中读取每个文件,按文件名添加键和最后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()
    

    【讨论】:

    • 出现错误ValueError: Plan shapes are not aligned 编辑:已解决的错误
    • @DejanMarić - 问题在于重复的列名 - check.
    • 具有空值的列根本不会合并。我知道在某些文件中缺少值..
    • @DejanMarić - 很难提供帮助,数据是否保密?
    • @DejanMarić - 或者将此值添加到字典中,例如'Currnt Market Cap / Total Liabilites':'MC/TL',
    猜你喜欢
    • 2019-10-11
    • 2018-03-30
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 2019-12-27
    • 2021-07-07
    相关资源
    最近更新 更多