我有以下基本的熊貓數據框:df: Name Category Rank 0 John A nan 1 Mick A nan 2 Tess A nan 3 Jackie A nan 4 Tash A nan我想在排名列中有一個字符串,所以它是這樣的: Name Category Rank0 John A A11 Mick A A22 Tess A A33 Jackie A A44 Tash A A5我已經嘗試過,df['Rank'] =df['Rank'].fillna("A"+str(df.index.values+1))但它給了我所有的索引值。我確信有一個簡單的方法,但我似乎找不到它。任何幫助將不勝感激!
3 回答

慕桂英546537
TA貢獻1848條經驗 獲得超10個贊
如果您有多個不同的類別,則更安全
df['Rank'] = df.Category + df.groupby('Category').cumcount().add(1).astype(str)
df
Out[232]:
Name Category Rank
0 John A A1
1 Mick A A2
2 Tess A A3
3 Jackie A A4
4 Tash A A5

HUWWW
TA貢獻1874條經驗 獲得超12個贊
有多種方法可以解決這個問題。
最簡單的
df['Rank1'] = df['Category'] + (df.reset_index().index+1).astype(str)
專業的
df['Rank2'] = df['Category'] + (np.arange(df.shape[0])+1).astype(str)
或者
df['Rank3'] = df['Category'] + (np.arange(len(df))+1).astype(str)
其他
df.insert(loc=0, column='Rank4', value=df['Category'] + np.arange(len(df))+1).astype(str))

慕雪6442864
TA貢獻1812條經驗 獲得超5個贊
你可以試試這個:
df['Rank'] = df['Category'] + (np.arange(len(df)) + 1).astype(str) OR df['Rank'] = df['Category'] + (df.index + 1).astype(str)
添加回答
舉報
0/150
提交
取消