如何从多个csv文件中提取特定数据,并在python中放入新的单个csv
我有一个目录,其中包含大约3000或4000个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新
我想创建一个包含所有原始信息的特定的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)