重命名非常大的CSV数据文件的列[重复]。


我有一个相当大的数据文件,可用内存为200%,我想重命名列,并将其保存到一个不同名称的新文件中。

当我在一个小样本上进行重命名时,事情就像预期的那样,即:”重命名”。

df = pd.read_csv(path, encoding="ISO-8859-1", engine='python', nrows=10)
print_columns(df)

rename_columns(df)
print_columns(df)
df.to_csv(path_to_save)

这工作,并按预期重命名列,但只保存了大文件的十行采样。

当加载非常大的文件时,Python中有几个选项。

1) 逐行阅读和处理大文件。

我上次在另一个大文件上做了这样的操作,但在仅仅重命名列的时候,我真的需要这样做吗?

2) 分块 中。

chunksize = 100000
for chunk in pd.read_csv(path, chunksize=chunksize, encoding="ISO-8859-1", engine='python'):
    print_columns(chunk)
    rename_columns(chunk)
    print_columns(chunk)

很明显,我重命名了每一个分块,但我最大的问题是如何将所有的分块按照正确的顺序拼接起来,并保存大的分块?

3)有没有一个好用的老shell命令,可以更容易地完成列重命名?

作为背景,我准备将数据导入数据库,但需要保持源文件的原样,从而保存到不同的文件名。

解决方案:

你能不能只写一个单行的csv文件,写上你的列名,然后用文本编辑器命令行把其他行放进去?

import csv
columns = [['A','B','C','D','E']]
file_name = "column_file.csv"
with open(file_name, mode='w') as csv_file:
        csv_writer = csv.writer(csv_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
        csv_writer.writerow(columns)

现在你有一个列名的column_file.csv文件。删除第一行的 large_file.csv 文件,并将其放入一个名为 new_large_file.csv.

sed '1d' large_file.csv > new_large_file.csv

现在附加 new_large_file.csv 到您创建的只有列头的文件中,并将其保存在 new_large_file.csv

cat column_file.csv new_large_file > final_file.csv

应该还是有一份使用这个的原件,以防万一,希望能帮到你。

给TA打赏
共{{data.count}}人
人已打赏
未分类

点击时不显示API

2022-9-9 0:33:22

未分类

| (() => {})” is not evaluating as expected

2022-9-9 0:33:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索