我需要重命名 Pandas 列中的所有值(來自資料框),并且我希望新值具有“類似迭代”的新名稱。
假設我的資料框 (df) 有一個名為“animals”的列,其中包含一些值,如“dog、cat、pig 等”,它們都是字串。我想重命名所有值,并且我希望新值類似于“animal_1、animal_2、animal_3 等”。
我試過類似的東西:
for i in range (1, 20):
for val in df['animals']:
df['animals'].replace({'val' : 'animal_(i)'})
但它根本不起作用......
[編輯]
重要的是,對于每個“舊值”,“新值”必須相同。這意味著,即,如果我有 32 個值是“狗”......任何“狗”值都變成相同的“動物_x”,我對“i”變成的“x”值不感興趣。 ..
這就是為什么我嘗試使用 for 回圈,但沒有好的解決方案......
關于如何做的任何建議?
uj5u.com熱心網友回復:
如果有默認RangeIndex值可以使用:
df['animals'] = 'animal_' (df.index 1).astype(str)
或者對 f 字串使用串列推導:
df['animals'] = [f'animal_{i 1}' for i in df.index]
對于任何索引:
df['animals'] = [f'animal_{i 1}' for i in np.arange(len(df.index))]
編輯:如果每種動物使用需要相同的編號:
df['new'] = [f'animal_{i 1}' for i in pd.factorize(df['animals'])[0]]
print (df)
animals new
0 dog animal_1
1 cat animal_2
2 pig animal_3
3 dog animal_1
4 dog animal_1
5 pig animal_3
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409090.html
標籤:
