我正在尝试从多个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
与参数一起使用left
和right
如此处指定:
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
(例如空数据帧)