我有以下基本的熊猫数据框: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
提交
取消