将2个csv文件合并为一个用于多个文件

时间:2018-05-21 11:44:05

标签: python pandas csv

我有2个部分的200个文件。例如。 ( aapl-BAL-Q.csv aapl-CAS-Q.csv )我将它们与pandas合并到 aapl-ALL.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 个答案:

答案 0 :(得分:1)

你可以:

  1. 使用pathlib.Path('/path/to/data_dir').glob('*.csv')
  2. 将所有文件读入pandas.Series
  3. 按文件名的第一部分对该系列进行分组
  4. 读取属于每个组的所有CSV文件
    • 连接它们
    • 将连接的DF保存为CSV文件
  5. 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)))