我对 df.rename() 方法和重命名有相当困惑的问题。无论我如何尝试重命名现有数据框中的列,生成的 HDF 输出的大小都会增加一倍。与大多数纯数字框架不同,我的框架确实包含许多被视为对象的 unicode 列。
我尝试了以下情况,但所有情况似乎都显着夸大了使用 df.to_hdf('some_file.h5', 'table') 生成的结果 HDF 文件。
假设我有一个名为 rename_dict 的重命名字典,如下所示:
rename_dict = {'old_column': 'new_column'}
情况 A(就地使用):
df.rename(columns=rename_dict, inplace=True)
情况 B(不使用就地):
df_renamed = df.rename(columns=rename_dict)
情况 C(手动重新映射和删除):
df['new_name'] = df['old_name]
del df['old_name']
我觉得我一定缺少对重命名操作如何发生以及如何在 HDF 文件中创建额外数据的一些重要理解。
我不确定它是否与此问题相关,但我确实收到了有关未映射到 c 类型的对象的性能警告。尽管这很糟糕,但在不应用任何类型的重命名操作的情况下,文件大小是“正确的”,因此我不认为这是根本原因。
任何见解(或解决方案)将不胜感激。
最佳答案
对于 C,请参阅 here
简而言之,出于性能原因,删除实际上并没有删除数据。重命名只是删除后追加。您只需ptrepack
您的文件即可回收空间(或创建一个新空间)。 HDF5 不是常规数据库。它对于某些类型的操作(即附加和查询)来说是高性能的。
您应该尝试使用table
格式来消除这些警告。一般来说,您可能会尝试存储非本地类型,这些类型会被腌制,请参阅 here
A和B是内存中操作,与HDF5文件无关。
关于Pandas 重命名会增加 HDF 文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23478923/