为了账号安全,请及时绑定邮箱和手机立即绑定

如何将大型 CSV 加载到 Python 中,选择特定列并另存为新 CSV?

如何将大型 CSV 加载到 Python 中,选择特定列并另存为新 CSV?

慕盖茨4494581 2022-12-06 16:29:22
我有一个 CSV 文件,大约有 800 万行,大小约为 3gb。我有一个要保存到新 CSV 中的特定列的列表。我一直在尝试将 Panda 与 Python 结合使用,但我就是做不好。这是我一直在使用的代码:import pandas as pddf = pd.read_csv('MyFile.csv' , usecols = ['AAA','BBB','CCC',])在最后一条命令之后,终端行返回 3 个点,如“...”。然后我尝试输入这个命令df.to_csv('NewFile.csv', index=False)但我收到以下错误:file "<stdin>", line 2  df.to_csv('NewFile.csv', index=False)   ^SyntaxError: invalid syntax任何帮助将不胜感激。谢谢你。编辑:这就是整个终端屏幕文本。Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32Type "help", "copyright", "credits" or "license" for more information.>>> df=pd.read_csv('MyFile.csv' , usecols = ['AAA','BBB','CCC',]... pd.df.to_csv('NewFile.csv', index=False)?  File "<stdin>", line 2    pd.df.to_csv('NewFile.csv', index=False)?     ^SyntaxError: invalid syntax>>>
查看完整描述

4 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

你有语法错误,因为你没有关闭终端下一行的括号

>>> df=pd.read_csv('MyFile.csv' , usecols = ['AAA','BBB','CCC',]


查看完整回答
反对 回复 2022-12-06
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

将 3GB 的文件读入内存不是一个好主意(这就是 pandas 会做的)。我建议使用流式传输工具,例如awk先过滤您的数据。



查看完整回答
反对 回复 2022-12-06
?
MM们

TA贡献1886条经验 获得超2个赞

您是否尝试过类似的东西:

df.to_csv (r'C:\Users\Ron\Desktop\NewFile.csv', index = False)

替换C:\Users\Ron\Desktop\NewFile.csv为输出文件名。


查看完整回答
反对 回复 2022-12-06
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

我找到了这个解决方案。我找到了一个代码来删除我不想要的列。所以复制了 CSV 并做到了。这是我使用的 Py 文件:


import csv


input_file = 'input.csv'

output_file = 'output.csv'

cols_to_remove = [1, 4, 10, 11] # Column indexes to be removed (starts at 0)


cols_to_remove = sorted(cols_to_remove, reverse=True) # Reverse so we remove from              the end first

row_count = 0 # Current amount of rows processed


with open(input_file, "r") as source:

reader = csv.reader(source)

with open(output_file, "w", newline='') as result:

    writer = csv.writer(result)

    for row in reader:

        row_count += 1

        print('\r{0}'.format(row_count), end='') # Print rows processed

        for col_index in cols_to_remove:

            del row[col_index]

        writer.writerow(row)


查看完整回答
反对 回复 2022-12-06
  • 4 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号