簡體   English   中英

重命名 dataframe 中的多個列

[英]Rename multiple columns in dataframe

Endo_co=Endo.columns
b_list=Endo_co.tolist()
subo='.[0-9]+$'
Endoo=pd.DataFrame(b_list)[pd.DataFrame(b_list).apply(lambda row: row.astype(str).str.contains(subo, case=False).any(), axis=1)] 
col_ind=Endoo.index
Endoo_list=Endoo.values.tolist()
new_col={}
for i in range(len(Endoo_list)):
    new_col[i]=([li[:-2] for li in Endoo_list[i]])
valu=new_col.values()
new_column=list(valu)
Endo.rename(columns = {b_list:new_column}, inplace = True)
Endo = Endo.rename(columns={Endo.columns[col_ind]: new_column})

我正在嘗試重命名多個列。 但是得到“TypeError:unhashable type:'list'”。 誰能幫我解決這個問題?

根據官方文檔,您必須提供類似 dict 的 object 作為columns屬性的參數。

在您的特定情況下,您正在嘗試使用列表設置字典的鍵和值,這就是您收到該錯誤的原因。 在相同的虛擬代碼下方,重現了確切的場景和錯誤。

list1 = ["1", "2", "3"]
list2 = ["11", "2", "3"]

dict12 = {
    list1: list2
}

為了能夠重命名 DataFrame 中的多個列,您必須首先為columns屬性正確構造字典。 下面舉個例子供參考。

import pandas as pd

df_columns = ["Column_1", "Column_2", "Column_3"]
df = pd.DataFrame(columns=df_columns)

df.head()
# Column_1  Column_2    Column_3

new_df_columns = {
    "Column_1": "Column_11"
}
df.rename(columns=new_df_columns, inplace=True)

df.head()
# Column_11     Column_2    Column_3

編輯1
對於您的特定示例,您可以運行以下字典理解語句來生成類似字典的 object ,您可以將其用作重命名操作的輸入。 請注意,這僅適用於兩個列表長度相同且相應列名在兩個列表中位於相同索引處的情況。

b_list = ["Column_1", "Column_2", "Column_3"]
new_column = ["Column_11", "Column_22", "Column_33"]

dict_columns = {b_list[i]: new_column[i] for i in range(len(b_list))}
# {'Column_1': 'Column_11', 'Column_2': 'Column_22', 'Column_3': 'Column_33'}

暫無
暫無

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

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