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

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


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

如果您想知道为什么我使用 concat 代替合并,那么当我使用合并时会出现错误“Series”对象没有属性“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”的数据框,您能告诉我需要更正代码的哪一部分吗?


慕标琳琳
浏览 145回答 5
5回答

青春有我

您可以尝试以下两种可能的解决方案:HS4_Tariffs_16 = HS4_Tariffs_16.reset_index().rename(columns={"ProductCode": "HSCode"})或者HS4_Tariffs_16.reset_index(inplace=True)  HS4_Tariffs_16.rename(columns={"ProductCode": "HSCode"}, inplace=True)

智慧大石

您可以使用该rename_axis方法更改索引列的名称。这可以避免更改数据和添加可能不必要的新索引列。HS4_Tariffs_16.rename_axis(index={'ProductCode':'HSCode'}, inplace=True)您还可以使用圆括号一步完成此操作,以获得更清晰的代码:HS4_Tariffs_16 = (    pd.concat([df_tariff_HS4_16_PT, df_tariff_HS4_16_MFN], axis=1)    .rename_axis(index={'ProductCode':'HSCode'}))

狐的传说

这应该有效df=df.rename({'Old_name' : 'New_name'}, axis=1)In your case HS4_Tariffs_16= HS4_Tariffs_16.rename({'ProductCode':'HSCode'}, axis=1)或者您可以使用您想要的名称创建一个副本,然后删除原始名称:df['renamed']=df['oldname'].copy()df= df.drop('oldname', axis=1)

婷婷同学_

我认为当您重置索引时就会出现问题。尝试这个:HS4_Tariffs_16.reset_index(drop = True)

蛊毒传说

以下方法可能无需重置索引即可工作。当您重命名列时,它可能会将其设置为索引,因为您将框架重命名为本身,而 Pandas 有时会很奇怪!HS4_Tariffs_16.rename(columns={'ProductCode':'HSCode'}, inplace=True)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python