繁体   English   中英

Select 来自多个 csv 文件的特定列,然后使用 pandas 将这些列合并到单个文件中

[英]Select specific column from multiple csv files, then merge those columns into single file using pandas

我正在尝试 select 来自多个 csv 文件的特定列,其中 header "Average" 然后从这些多个 csv 文件中的每一个中取出"Average"列,并将它们合并到一个新的 csv 文件中。

我在评论中留下了评论,以展示我尝试实现此目标的其他方式:

procdir = r"C:\Users\ChromePnP\Desktop\exchange\processed"

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用于 dataframe,文档在这里

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM