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:重命名非常大的数据文件的列的主要内容,如果未能解决你的问题,请参考以下文章

是否可以直接重命名存储在 hdf5 文件中的 pandas 数据框的列?

python pandas:重命名数据框中的系列?

python pandas:重命名多索引数据框中的单列标签

python pandas以相同的方式重命名多个列标题

在 Pandas 中重命名“None”值

python 重命名Pandas中的某个列