如何在Colab中将Pandas DataFrame正确保存至Google Drive为CSV文件?
解决Colab中将Pandas DataFrame保存到Google Drive的问题
我明白你的困扰——明明能在Colab本地看到生成的文件,却在Drive里找不到,大文件转存还直接失效,确实挺棘手的。咱们一步步拆解问题,给出靠谱的解决方案:
核心问题分析
你之前的尝试踩了几个典型的坑:
- 直接用
df.to_csv("file_path\data.csv")时,路径用了Windows风格的反斜杠\,但Colab是Linux环境,必须用正斜杠/;而且这个路径指向的是Colab的本地临时存储,并非你挂载的Google Drive目录,自然在Drive里找不到。 - 临时文件转存时用
f.read()读取大文件,会把10万行的完整数据一次性加载到内存,很容易触发内存溢出,导致保存失败。
正确解决方案
方案1:直接挂载Drive后用Pandas写入(最推荐)
这是最简单高效的方式,不管文件大小都能直接处理,只要确保挂载和路径无误:
- 先确认Google Drive已正确挂载(如果还没挂载,运行这段代码):
from google.colab import drive drive.mount('/content/drive')
运行后会弹出授权链接,按提示完成账号授权即可完成挂载。
- 提前创建目标目录(避免Pandas因为目录不存在静默失败):
import os # 替换成你实际要保存的Drive路径 target_dir = '/content/drive/MyDrive/Datatourisme/tests_automatisation' if not os.path.exists(target_dir): os.makedirs(target_dir)
- 直接用Pandas的
to_csv写入Drive路径:
# 假设你的DataFrame变量名为df df.to_csv(os.path.join(target_dir, 'data.csv'), index=False)
用os.path.join自动拼接路径能避免手动写斜杠出错;index=False可以避免把DataFrame的索引列写入CSV,根据你的需求调整即可。
方案2:大文件逐行拷贝(备选,针对特殊场景)
如果你因为某些限制必须用临时文件转存,别再一次性读取整个文件,改用逐行拷贝的方式,内存占用极低,超大文件也能轻松处理:
import shutil # Colab本地临时文件路径 tmp_path = '/content/data_tmp.csv' # Google Drive目标路径 target_path = '/content/drive/MyDrive/Datatourisme/tests_automatisation/data.csv' # 先将DataFrame写入本地临时文件 df.to_csv(tmp_path, index=False) # 逐行拷贝,避免内存溢出 with open(tmp_path, 'r') as f_in, open(target_path, 'w') as f_out: shutil.copyfileobj(f_in, f_out)
shutil.copyfileobj会自动处理逐行读写,内存占用几乎可以忽略,10万行的文件完全没问题。
验证方式
保存完成后,你可以在Colab左侧面板的/content/drive/MyDrive路径下找到文件,同时刷新Google Drive网页端,就能看到生成的CSV文件了。
内容的提问来源于stack exchange,提问作者overview datatourisme




