我有一个脚本,该脚本遍历子目录,并将.csv文件中的所有数据组合到一个大.csv文件中。但我想对其进行修改,以便为每个子目录创建单独的组合.csv(最好在子目录后命名)。到目前为止,我尝试过的一切似乎都无法做到。我想念什么?我的原始脚本在下面。
datax = []
dirx = 'path/to/folder'
for dirs, subdirs, files in os.walk(dirx):
for f in files:
if f.endswith('.csv'):
data2 = pd.read_csv(os.path.join(dirs, f), sep=' ', header=None, names=column_names)
datax.append(data2)
frame = pd.concat(datax)
frame.to_csv('alldata.csv', sep=',', index=False)
如果我将frame =
行移到os.walk
循环中,则表示没有任何内容可以串联。
答案 0 :(得分:1)
我找到了一种解决方案,但它可能不是最漂亮的:
# Your path
dirx = path
# Dictionnary to put all your subdirs concatenates
dict_data = {}
for dirs, subdirs, files in os.walk(path):
# First check if your subdirs is not empty
if subdirs:
# For every sudirs you have
for i in subdirs:
# I run a for loop inside of it
for dirs2, subdirs2, files2 in os.walk(path + "\\"+ i):
# I then instantiate a list
list_data = []
for j in files2:
# I append the data of your different files in this subdir to this list
data = pd.read_csv(path + "\\" + i + "\\" + j, sep=' ', header=None, names=column_names)
list_data.append(data)
# Concatenate and store it in the dictionnary, so you have the data compartimented
dict_data[i] = pd.concat(list_data)
dict_data[frame].to_csv('the/data/from/subdir/wanted', sep=',', index=False)
它应该给您这样的结果(testi,testa是我的子目录):
希望这对您有帮助!