我正在尝试连接桌面文件夹中的CSV文件:
C:\\Users\\Vincentc\\Desktop\\W1
并将最终的CSV输出到:
C:\\Users\\Vincentc\\Desktop\\W2\\conca.csv
CSV文件没有标题。但是,当我运行我的脚本时没有任何结果,也没有错误消息。我是初学者,有人可以查看下面的代码,非常感谢!
import os
import glob
import pandas
def concatenate(indir="C:\\Users\\Vincentc\\Desktop\\W1",outfile="C:\\Users\\Vincentc\\Desktop\\W2\\conca.csv"):
os.chdir(indir)
fileList=glob.glob("indir")
dfList=[]
for filename in fileList:
print(filename)
df=pandas.read_csv(filename,header=None)
dfList.append(df)
concaDf=pandas.concat(dfList,axis=0)
concaDf.to_csv(outfile,index=None)
答案 0 :(得分:2)
仅为了连接而将csv文件加载到pandas
是低效的。有关更直接的替代方案,请参阅this answer。
如果您坚持使用pandas
,第三方库dask
会提供直观的界面:
import dask.dataframe as dd
df = dd.read_csv('*.csv') # read all csv files in directory lazily
df.compute().to_csv('out.csv', index=False) # convert to pandas and save as csv
答案 1 :(得分:1)
asyncio executors API需要使用通配符来匹配您提供的文件夹中的所有文件。没有它,您可能只是获取返回的文件夹名称,而不是其中的任何文件。请尝试以下方法:
import os
import glob
import pandas
def concatenate(indir=r"C:\Users\Vincentc\Desktop\W1\*", outfile=r"C:\Users\Vincentc\Desktop\W2\conca.csv"):
os.chdir(indir)
fileList = glob.glob(indir)
dfList = []
for filename in fileList:
print(filename)
df = pandas.read_csv(filename, header=None)
dfList.append(df)
concaDf = pandas.concat(dfList, axis=0)
concaDf.to_csv(outfile, index=None)
此外,您可以通过使用\\
或在字符串前添加/
来避免添加r
。这具有禁用字符串上的反斜杠转义的效果。