我有這個DataFrame,不幸的是行名包含整數和字串,例如'20210902_Rene_Nicole_OC2012A_Sample_0087_20uLinject_01'。我想重命名行以僅包含樣本編號,上面的示例將變為“0087”。
df=pd.DataFrame([['20210902_Rene_Nicole_OC2012A_Sample_0087_20uLinject_01',2.233,7.84554,10.222],['20210902_Rene_Nicole_OC2012A_Sample_0097_20uLinject_01',2.000,7.8666,10.000],['20210902_Rene_Nicole_OC2012A_Sample_0098_20uLinject_01',2.230,7.8500,10.005]],columns=('786.2323','800.3231','832.5699','850.0022'))
這將創建以下內容DataFrame:

所需的輸出如下所示DataFrame:

我曾嘗試轉置資料框以重命名列,然后在最后轉回,并使用 str.replace 函式編輯列名,但我認為存在問題,因為列名同時包含整數和字串,并且它們會改變. 如果這可行,我會再次洗掉示例名稱“_20uLinject_01”,但我想知道是否有更好的方法來執行此操作。
df.transpose()
df.columns = df.columns.str.replace('20210902_Rene_Nicole_OC2012A_Sample_', '')
#returns error: "AttributeError: Can only use .str accessor with string values!"
任何想法如何去做?我有大約 180 行要重命名,所以回圈遍歷或者不必為每一行手動執行它會很棒。謝謝!
uj5u.com熱心網友回復:
只需使用.str.split("_").str[<index>]. 代碼如下:
>>> df["786.2323"] = df["786.2323"].str.split("_").str[5]
>>> df
786.2323 800.3231 832.5699 850.0022
0 0087 2.233 7.84554 10.222
1 0097 2.000 7.86660 10.000
2 0098 2.230 7.85000 10.005
這里的索引 5 對應于您需要的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/409501.html
標籤:
