我是python的新手,我有一个场景,其中有多个带有文件名的镶木地板文件 . 例如:par_file1,par_file2,par_file3等文件夹中最多100个文件 .
我需要按顺序从file1开始读取这些镶木地板文件并将其写入单个csv文件 . 在写入file1的内容之后,file2内容应该附加到没有 Headers 的相同csv . 请注意,所有文件都具有相同的列名称,并且只将数据拆分为多个文件 .
我学会了使用pyarrow将单个镶木地板转换为csv文件,代码如下
将pandas导入为pd
df = pd.read_parquet('par_file.parquet')
df.to_csv( 'csv_file.csv')
但我不能将其扩展为循环多个镶木地板文件并附加到单个csv . 大熊猫有没有办法做到这一点?或任何其他方式来做这将是非常有帮助的 . 谢谢 .
2 回答
如果要将文件复制到本地计算机并运行代码,则可以执行此类操作 . 下面的代码假定您在与镶木地板文件相同的目录中运行代码 . 它还假定文件的命名如上所述:"order. ex: par_file1,par_file2,par_file3 and so on upto 100 files in a folder."如果您需要搜索文件,则需要使用
glob
获取文件名,并明确提供要保存csv的路径:open(r'this\is\your\path\to\csv_file.csv', 'a')
希望这会有所帮助 .如果需要,可以删除打印语句 .
使用
pandas 0.23.3
在python 3.6
中测试我遇到了这个问题,看看pandas是否可以原生地读取分区的镶木地板数据集 . 我不得不说当前的答案是不必要的冗长(使其难以解析) . 我还想象,不断打开/关闭文件句柄然后根据大小扫描到它们的末尾并不是特别有效 .
更好的选择是将所有镶木地板文件读入单个DataFrame,并将其写入一次:
或者,如果您真的想要附加到文件: