给定一个大数据框(在我的情况下为250M行和30列),为什么仅更改列名然后这么慢?
我正在使用df.rename(columns={'oldName':'newName'},inplace=True)
,因此它不应复制任何数据,但是要花费30秒以上的时间,而我原本希望以毫秒为单位(因为它只是替换一个字符串)另一个)。
我知道,那是一个巨大的表,比大多数人的计算机中有更多内存(因此,我也不会添加示例代码)要多,但这仍然不需要花费大量时间,因为它不是实际接触任何数据。为什么要花这么长时间,即为什么重命名列的工作量与数据帧的行数成比例?
答案 0 :(得分:2)
我认为inplace=True
不会复制您的数据。关于SO有一些讨论,说它确实复制了,然后再分配回去。另请参见this github issue。
您可以使用以下方法覆盖列:
df.columns = df.columns.to_series().replace({'a':'b'})