提问人:Vedant Monger 提问时间:10/2/2020 更新时间:11/7/2023 访问量:3527
在 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 代替 merge,那么当我使用 merge 时,会出现错误“Series”对象没有属性“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
如果我想要的最终结果是名为“ProductCode”的列重命名为“HSCode”的数据帧,您能否告诉我我需要更正代码的哪一部分。
答:
0赞
user47467
12/30/2020
#1
以下方法可能有效,而无需重置索引。当您重命名列时,它可能会将其设置为索引,因为您将框架重命名为其本身,而 Pandas 有时就是这样奇怪的!
HS4_Tariffs_16.rename(columns={'ProductCode':'HSCode'}, inplace=True)
0赞
chsws
8/19/2022
#2
可以使用该方法更改索引列的名称。这样可以避免更改数据并添加可能不必要的新索引列。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'})
)
0赞
SERGIO
10/20/2022
#3
这应该有效
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)
0赞
Lorenzo Bassetti
1/4/2023
#4
您可以尝试以下两种可能的解决方案:
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)
0赞
nonsinecura
8/8/2023
#5
我认为当您重置索引时会出现问题。试试这个:
HS4_Tariffs_16.reset_index(drop = True)
0赞
Farooq Zaman
11/7/2023
#6
简单的解决方法是:使用结果中的值数组,并从中创建一个新的 DataFrame,并传递您选择的新列名,代码片段可能如下所示。
HS4_Tariffs_16=pd.concat([df_tariff_HS4_16_PT,df_tariff_HS4_16_MFN],axis=1)
HS4_Tariffs_16=pd.DataFrame(HS4_Tariffs_16.values, columns=["new_col_name1", "new_col_name_2"])
评论
HS4_Tariffs_16
HS4_Tariffs_16 = HS4_Tariffs_16.reset_index()
rename