Python / Pandas:重命名非常大的数据文件的列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python / Pandas:重命名非常大的数据文件的列相关的知识,希望对你有一定的参考价值。
我有一个很大的数据文件,可用内存为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中有一些选项:
一种是逐行读取大文件并逐行处理它,这是我上次在另一个大文件上使用的,但是在重命名列时我真的需要吗?
另一个是chunking在大熊猫中,像这样:
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)
显然,我重命名了每个块,但是最大的问题是如何将所有块按正确的顺序缝合在一起并保存大块?
而且,实际上是否有一个很好的旧Bash命令可以使列重命名更容易?
作为背景,我准备将数据导入数据库,但需要保持源文件不变,因此将其保存为其他文件名。
答案
对于大文件,使用流编辑器sed的简单命令行解决方案可能比python脚本快:
sed -e '1 {/SFID/ {s/Id/IgnoreId/; s/SFID/Id/}}' -I myfile.csv
如果包含Id
,则在第一行中将IgnoreId
更改为SFID
,将Id
更改为SFID
。如果其他列标题也包含字符串Id
(例如ImportantId),则必须相应地在s
命令中优化正则表达式。
以上是关于Python / Pandas:重命名非常大的数据文件的列的主要内容,如果未能解决你的问题,请参考以下文章