我在一个文件夹中有大约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' 有没有更好的方法?
答案 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)