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

elcex8rz  于 2023-01-04  发布在  Python
关注(0)|答案(4)|浏览(314)

我有两个Pandas系列,我用下面的代码合并:

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

如果你想知道为什么我用concat代替merge,错误'Series'对象没有属性'merge'显示当我使用merge.所以无论如何,我用concat合并了两个序列,产生了一个 Dataframe .然后,我用代码重置索引:

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

如果我想要的最终结果是一个 Dataframe ,其中名为“ProductCode”的列重命名为“HSCode”,请告诉我需要更正代码的哪一部分。

7y4bm7vi

7y4bm7vi1#

下面的方法可能不需要重新设置索引就可以工作。当你重命名列的时候,你可以把它设置为索引,就像你重命名框架本身一样,Pandas有时候就是这样奇怪!

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

dbf7pr2w2#

可以使用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'})
)
um6iljoc

um6iljoc3#

这个应该可以

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)
2jcobegt

2jcobegt4#

您可以尝试以下两种可能的解决方案:

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)

相关问题