代码之家  ›  专栏  ›  技术社区  ›  dejanmarich

将两个csv文件合并为一个文件,用于多个文件[关闭]

  •  -1
  • dejanmarich  · 技术社区  · 8 年前

    我有200个文件分为两部分。例如( aapl-BAL-Q.csv aapl-CAS-Q.csv )我把它们合并到 好的。csv 熊猫:

    import pandas as pd
    a = pd.read_csv('.../aapl-BAL-Q.csv')
    b = pd.read_csv('.../aapl-CAS-Q.csv')
    c = pd.concat([a,b], join='outer', axis=0, ignore_index=True, join_axes=None)
    c.to_csv('...aapl-ALL.csv', index=False)
    

    现在我需要为剩下的文件(例如。 aa-BAL-Q.csv aa-CAS-Q.csv )等等。。我想知道如何用最简单的方法,而不是用代码tnx重命名文件名。

    1 回复  |  直到 8 年前
        1
  •  1
  •   MaxU - stand with Ukraine    8 年前

    你可以:

    1. 将所有文件读入一个文件夹。系列使用 pathlib.Path('/path/to/data_dir').glob('*.csv')
    2. 按文件名的第一部分对该系列进行分组
    3. 读取属于每个组的所有CSV文件
      • 连接它们
      • 将连接的DF保存到CSV文件

    from pathlib import Path
    
    p = Path(r'/path/to/data/directory')
    
    files = pd.Series([f.name for f in p.glob('*.csv')])
    
    (files.groupby(files.str.split('-').str[0])
          .apply(lambda g: pd.concat([pd.read_csv(p / f) for f in g], ignore_index=True)
                             .to_csv(p / (g.name.split('-')[0] + '-ALL.csv'), index=False)))