如何从多个csv文件中提取特定数据,并在python中放入新的单个csv

如何从多个csv文件中提取特定数据,并在python中放入新的单个csv,python,csv,Python,Csv,我有一个目录,其中包含大约3000或4000个csv文件,所有文件都具有相同的基本格式(为了简单起见,更改为简单的数字和标题): 我想创建一个包含所有原始信息的特定的CSV文件,其中的标题如下:文件名,席,Yb,Xb,YB-XBp> 要继续前面的示例,这是新csv文件的标题和第一行理想的外观: filename,XI,YB,XB,YB-XB File1,9,1,2,-1 File2,... 。。。依此类推,创建一个主csv文件,其中包含来自目录中每个原始csv的相同特定信息 我是python新

我有一个目录,其中包含大约3000或4000个csv文件,所有文件都具有相同的基本格式(为了简单起见,更改为简单的数字和标题):

我想创建一个包含所有原始信息的特定的CSV文件,其中的标题如下:<代码>文件名,席,Yb,Xb,YB-XBp> 要继续前面的示例,这是新csv文件的标题和第一行理想的外观:

filename,XI,YB,XB,YB-XB
File1,9,1,2,-1
File2,...
。。。依此类推,创建一个主csv文件,其中包含来自目录中每个原始csv的相同特定信息

我是python新手,曾尝试编写一段代码来实现这一点,但这比我以前进行的少量实践要复杂得多。如果您能帮助解释如何执行此操作或代码示例,我们将不胜感激

谢谢你,艾琳

编辑: 在网上查看是否可以找到这个问题的答案后,我能够拼凑出大部分工作代码,完成我希望它完成的任务,尽管我仍然无法访问原始csv文件中的特定数字。以下是我到目前为止得出的结论:

import glob
import os

outfile = open('path/output.csv', 'w') 
outfile.write('filename,XI,YB,XB,YB-XB\n') 
for filename in glob.glob('path/*.csv'): 
    if filename == 'output.csv':
        continue     # to skip this file 
    with open(filename, 'r') as infile: 
        count = 0
        lineno = 0 
        for lineno == 1: 
            continue     # skips header
        fields = line.split(',') 
        a =     # Here goes the code to access XI
        b =     # Here goes the code to access YB 
        c =     # Here goes the code to access XB
        d = b - c 
        outfile.write('%s,%g,%g,%g,%g\n' % (filename, a, b, c, d)) 
        count += 1
    if count == 0:     # in case of empty files
        outfile.write('%s,0,0,0,0\n' % filename) 
        print '%s is empty!' % filename
outfile.close() 

如果所有文件都具有相同的列名,则可以按以下方式使用熊猫

import pandas as pd
import glob

df_all = pd.DataFrame(columns =['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume'] )

for filename in glob.glob('path\*.csv'): 
    df = pd.read_csv(filename,usecols = ['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume'])
    df_all = pd.concat([df,df_all],axis=0)

df_all.to_csv(mergedfilename)

粘贴你的代码!的确分享你的尝试,也许你认为你可以解决它!到目前为止,我已经添加了代码。针对特定列进行了编辑
import pandas as pd
import glob

df_all = pd.DataFrame(columns =['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume'] )

for filename in glob.glob('path\*.csv'): 
    df = pd.read_csv(filename,usecols = ['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume'])
    df_all = pd.concat([df,df_all],axis=0)

df_all.to_csv(mergedfilename)