循环遍历文件名列表并将它们一起添加到Python中

时间:2016-01-28 19:43:33

标签: python pandas append filenames

到目前为止,我有一个以文件名的相同部分开头的文件列表,所以我想要通配符并获取目录中以文件名相同部分开头的所有文件名的列表,然后追加所有这些文件一起只是一个大文件。我知道我需要导入glob。所以这就是我到目前为止所拥有的。

import glob

filename = glob.glob('1511**.mnd')
data_nov15_hereford = pd.DataFrame()
list = []

for i in filename:
  f_nov15_hereford = pd.read_csv(i, skiprows = 33, sep='\s+',chunksize=30)
  list.append(f_nov15_hereford)
  data_nov15_hereford = pd.concat(list)
  data_nov15_hereford = data_nov15_hereford.convert_objects(convert_numeric=True)

是否有更简单或更好的方法来实现这一点。 谢谢!

1 个答案:

答案 0 :(得分:4)

import glob

filename = glob.glob('1511**.mnd')
data_nov15_hereford = pd.DataFrame()
frames = []

for i in filename:
    f_nov15_hereford = pd.read_csv(i, skiprows = 33, sep='\s+')
    frames.append(f_nov15_hereford)
data_nov15_hereford = pd.concat(frames)
data_nov15_hereford = data_nov15_hereford.convert_objects(convert_numeric=True)
# save to csv
data_nov15_hereford.to_csv(filename)
  • 请勿在{{1​​}}内拨打pd.concat()。这样做很大程度上是浪费精力,因为

    for-loop

    在循环的每次迭代中为data_nov15_hereford = pd.concat(list) 分配一个新值。

  • 避免命名变量data_nov15_hereford,因为list是内置的Python类。将特定列表分配给list可能会导致出现令人惊讶且难以发现的错误,如list这样会产生x = list(...)错误。(