gpt4 book ai didi

python - 重命名非常大的 CSV 数据文件的列

转载 作者:行者123 更新时间:2023-12-04 00:57:13 26 4
gpt4 key购买 nike

我有一个相当大的数据文件,它有 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) 在 pandas 中分 block :

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)

显然,我重命名了每个 block ,但我遇到的一个大问题是如何以正确的顺序将所有 block 缝合在一起并保存大块?

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

应该还是保留原件的副本,以防万一出现问题,希望对您有所帮助。

关于python - 重命名非常大的 CSV 数据文件的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61405879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com