从多个 csv 文件中选择特定列,然后使用 pandas 将这些列合并为单个文件



我正在尝试从多个csv文件中选择一个标题为"Average"的特定列。然后从这些多个 csv 文件中的每一个中获取"Average"列,并将它们合并到一个新的 csv 文件中。

我留下了评论以展示我尝试实现这一目标的其他方法:

procdir = r"C:UsersChromePnPDesktopexchangeprocessed"
collected = os.listdir(procdir)
flist = list(collected)
flist.sort()
#exclude first files in list
rest_of_files = flist[1:]
for f in rest_of_files:
get_averages = pd.read_csv(f, usecols = ['Average'])
#df1 = pd.DataFrame(f)
# df2 = pd.DataFrame(rundata_file)
#get_averages = pd.read_csv(f)
#for col in ['Average']:
#get_averages[col].to_csv(f_template)
got_averages = pd.merge(get_averages, right_on = 'Average')
got_averages.to_csv("testfile.csv", index=False)

编辑:

我能够获得我想要的列,它们将打印。但是,现在保存的文件只有循环中的单个平均列,而不是保存循环中选择的所有列。

rest_of_files = flist[1:]
#f.sort()
print(rest_of_files)
for f in rest_of_files:
get_averages = pd.read_csv(f)
df1 = pd.DataFrame(get_averages)
got_averages = df1.loc[:, ['Average']]
print(got_averages)
f2_temp = pd.read_csv(rundata_file)
df2 = pd.DataFrame(f2_temp)
merge_averages = pd.concat([df2, got_averages], axis=1)
merge_averages.to_csv(rundata_file, index=False)

要么将pd.merge与参数一起使用leftright如此处指定:

got_averages = pd.merge(got_averages, get_averages, right_on = 'Average')

或者您使用.merge作为数据帧,在此处记录:

got_averages = got_averages.merge(get_averages, right_on = 'Average')

请记住,在for循环中使用它之前,您需要初始化got_averages(例如空数据帧)

最新更新