Chu*_*uck 73 python csv merge concatenation
伙计们,我这里有200个单独的csv文件,从SH(1)到SH(200)命名.我想将它们合并到一个csv文件中.我该怎么做?
wis*_*sty 82
正如ghostdog74所说,但这次有标题:
fout=open("out.csv","a")
# first file:
for line in open("sh1.csv"):
fout.write(line)
# now the rest:
for num in range(2,201):
f = open("sh"+str(num)+".csv")
f.next() # skip the header
for line in f:
fout.write(line)
f.close() # not really needed
fout.close()
Run Code Online (Sandbox Code Playgroud)
bli*_*say 51
你为什么不能这么做sed 1d sh*.csv > merged.csv?
有时你甚至不必使用python!
sco*_*tle 39
使用接受的StackOverflow答案创建要附加的csv文件列表,然后运行此代码:
import pandas as pd
combined_csv = pd.concat( [ pd.read_csv(f) for f in filenames ] )
Run Code Online (Sandbox Code Playgroud)
如果要将其导出到单个csv文件,请使用:
combined_csv.to_csv( "combined_csv.csv", index=False )
Run Code Online (Sandbox Code Playgroud)
gho*_*g74 16
fout=open("out.csv","a")
for num in range(1,201):
for line in open("sh"+str(num)+".csv"):
fout.write(line)
fout.close()
Run Code Online (Sandbox Code Playgroud)
Nor*_*ldt 11
我将通过篮子中的另一个代码示例
from glob import glob
with open('singleDataFile.csv', 'a') as singleFile:
for csvFile in glob('*.csv'):
for line in open(csvFile, 'r'):
singleFile.write(line)
Run Code Online (Sandbox Code Playgroud)
Ale*_*lli 10
这取决于你所说的"合并" - 他们有相同的列吗?他们有标题吗?例如,如果它们都具有相同的列,并且没有标题,则简单的连接就足够了(打开目标文件进行写入,遍历每个用于读取的源,使用shutil.copyfileobj从open-for-reading源到open-for-writing目的地,关闭源代码,保持循环 - 使用该with语句代表您完成结束.如果它们具有相同的列,但也有标题,则在将readline每个源文件复制到目标之前打开它以进行读取之后,除了第一个文件之外,您将需要一个,以跳过标题行.
如果CSV文件并非都具有相同的列,那么您需要定义在哪种意义上"合并"它们(如SQL JOIN?或"水平",如果它们都具有相同数量的行?等等) ) - 在这种情况下,我们很难猜出你的意思.
| 归档时间: |
|
| 查看次数: |
128684 次 |
| 最近记录: |