在 Pandas 中合并数据后重命名列

Posted

技术标签:

【中文标题】在 Pandas 中合并数据后重命名列【英文标题】:Renaming columns after merging data in Pandas 【发布时间】:2021-01-17 10:39:55 【问题描述】:

我有两个 Pandas 系列,我使用以下代码合并:

HS4_Tariffs_16=pd.concat([df_tariff_HS4_16_PT,df_tariff_HS4_16_MFN],axis=1)

如果您想知道为什么我使用 concat 代替合并,当我使用合并时出现错误 'Series' object has no attribute 'merge'。 所以无论如何,我使用 concat 合并了这两个系列,从而产生了一个数据框。此后,我使用代码重置索引:

HS4_Tariffs_16.reset_index()

当我尝试使用代码重命名列时,真正的问题出现了:

HS4_Tariffs_16=HS4_Tariffs_16.rename(columns='ProductCode':'HSCode')

它没有重命名列,而是将列转换为索引。输出是这样的:

      Preferential tariff for APTA countries    MFN duties (Applied)
ProductCode         
101     0.3     0.3
102     0.3     0.3
103     0.3     0.3
104     0.3     0.3
105     0.3     0.3
...     ...     ...
9702    0.1     0.1
9703    0.1     0.1
9704    0.0     0.0
9705    0.1     0.1
9706    0.1     0.1

1224 rows × 2 columns

如果我想要的最终结果是一个将名为“ProductCode”的列重命名为“HSCode”的数据框,您能否告诉我需要更正代码的哪一部分。

【问题讨论】:

在您尝试重命名之前,df 是什么样的?我认为错误不在您的重命名中 您从未实际上重置索引。将HS4_Tariffs_16 更改为:HS4_Tariffs_16 = HS4_Tariffs_16.reset_index() 然后运行rename,看看是否得到了预期的结果。 非常感谢@CameronRiddell。成功了! 我投票关闭此问题是由于错字/不可重现 【参考方案1】:

以下可能无需重置索引即可工作。它可能会将其设置为索引,因为您在重命名列时将框架重命名为自身,而 Pandas 有时会像那样奇怪!

HS4_Tariffs_16.rename(columns='ProductCode':'HSCode', inplace=True)

【讨论】:

以上是关于在 Pandas 中合并数据后重命名列的主要内容,如果未能解决你的问题,请参考以下文章

pandas重命名列名称数据列名称重命名(Rename Column Names): renameset_axisdf.columns

如何使用 Visual Studio 数据库项目重命名列?

根据字典重命名PANDAS中的列

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

在 python 或 Pyspark 数据框中使用特殊字符重命名列

Visual Studio 数据库项目重命名列