簡體   English   中英

合並數據后重命名列 Pandas

[英]Renaming columns after merging data in Pandas

我有兩個 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' showed when I used merge。 所以無論如何,我使用 concat 合並了兩個系列,結果是 dataframe。此后,我使用代碼重置索引:

HS4_Tariffs_16.reset_index()

現在,當我嘗試使用代碼重命名列時,真正的問題出現了:

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

它沒有重命名該列,而是將該列轉換為索引。 output 是這樣的:

      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”,您能告訴我我需要更正代碼的哪一部分嗎?

以下可能無需重置索引即可工作。 當您重命名列時將框架重命名為自身時,它可能會將其設置為索引,而 Pandas 有時會像那樣奇怪!

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 = 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM