将文件夹中的多个csv文件加入单个csv python中

时间:2016-12-23 07:27:48

标签: python csv pandas

我在一个文件夹中有大约100个csv文件。

/path/to/directory/*.csv
 it has files abc.csv,dsf.csv,rgfb.csv.....etc

csv文件的视图。

182 a   1   4   242 52450
182 a   1   2   242 7176
182 c   1   1   242 7176
182 c   1   1   242 7410

我想从目录中获取所有这些csv并将其放在一个csv中。 没有列名,但所有csv都有相同的列(即5),我想加入所有csv,并将它放在pandas dataframe中并给出列名 如

col1  col2  col3  col4  col5
data  data  data  data  data
...   ...    ...   ...   ...

我试过的是。

import os
csv_list = []
for root, dirs,files in os.walk("path/to/directory", topdown=True):
for name in files:
    csv_list.append(os.path.join(root, name))

我得到了csv列表

然后我做了

import pandas as pd
combined_csv = pd.append( [ pd.read_csv(f) for f in csv_list ] )

但它是水平附加而不是垂直附加。

此外,我必须将列名称添加到' combined_csv' 有没有更好的方法?

1 个答案:

答案 0 :(得分:1)

如果需要垂直追加,我认为您需要concat参数axis=1

combined_csv = pd.concat([ pd.read_csv(f, header=None) for f in csv_list ], axis=1)

如果需要水平附加是默认参数axis=0,可以省略:

import pandas as pd
combined_csv = pd.concat([ pd.read_csv(f, header=None) for f in csv_list ], ignore_index=True)

如果需要设置列名,请使用参数names

names = ['col1','col2','col3','col4','col5']
combined_csv = pd.concat([ pd.read_csv(f, header=None, names = names) for f in csv_list ],
                           ignore_index=True)