我想按最后一个子文件夹的名称合并所有文件。
示例:
说每个子文件夹中有两个文件,分别为:45554
和32456
。
因此,它们的路径类似于:
文件更多,这只是一个例子
C:\Users\user\Desktop\SHAPE\45554\INS\INS.shp
C:\Users\user\Desktop\SHAPE\45554\INB\INB.shp
C:\Users\user\Desktop\SHAPE\32456\INS\INS.shp
C:\Users\user\Desktop\SHAPE\32456\INB\INB.shp
所以我需要将所有INB文件合并为一个,并将所有INS文件合并为一个。
这是我的代码:问题是它会合并所有文件而不是我提到的组。
import pandas as pd
import os
import glob
folder = path.Path(r"C:\Users\user\Desktop\SHAPE")
files = []
for fil in glob.iglob('**/Desktop/SHAPE/**/' ,recursive = True):
files.append(pd.read_table(fil).assign(col = get_folder(fil))) #needs group by somehow
gdf = pd.concat(files, sort = True) #concatenate files
gdf.to_csv(folder / 'compiled')
答案 0 :(得分:0)
您可以列出2个列表。一种用于“ INB”,一种用于“ INS”:
INB = [], INS = []
for fil in glob.iglob('**/Desktop/SHAPE/**/' ,recursive = True):
df = pd.read_table(fil).assign(col = get_folder(fil))
if fil.endswith('INS.shp'):
INS.append(df)
else:
INB.append(df)
INB_df = pd.concat(INB).to_csv('INB.csv')
INS_df = pd.concat(INS).to_csv('INS.csv')
对于多个类别,请使用字典。例如:
import os
from collections import defaultdict
d = defaultdict(list)
for fil in glob.iglob('**/Desktop/SHAPE/**/' ,recursive = True):
df = pd.read_table(fil).assign(col = get_folder(fil))
d[os.path.basename(fil)].append(df)
for cat, lst in d.items():
pd.concat(lst).to_csv(cat)