Python-Pandas:向现有列添加递增编号

Python-Pandas:向现有列添加递增编号,python,pandas,Python,Pandas,我有一个包含多个列的数据框架 示例数据: d = {'col1': ['A','B','C','D']} df = pd.DataFrame(data=d) 我试图修改col1并添加“_1”,“_2” 要得到这样的东西: col1 0 A_1 1 B_2 2 C_3 3 D_4 我试着这样做: df_final['col1'] = df_final['col1'].apply(lambda x: str(x)+str(df_final[x].inde

我有一个包含多个列的数据框架

示例数据:

d = {'col1': ['A','B','C','D']}
df = pd.DataFrame(data=d)
我试图修改col1并添加“_1”,“_2”

要得到这样的东西:

     col1
 0    A_1
 1    B_2
 2    C_3
 3    D_4
我试着这样做:

df_final['col1'] = df_final['col1'].apply(lambda x: str(x)+str(df_final[x].index))
但我有一个错误:

KeyError: 'A'

1
添加到索引中,如果
DataFrame中的默认索引为
,则转换为字符串并添加到列中:

df['col1'] = df['col1'] + '_' + (df.index + 1).astype(str)
print (df)
  col1
0  A_1
1  B_2
2  C_3
3  D_4

如果不是默认值
范围索引

df['col1'] = df['col1'] + '_' + pd.RangeIndex(1, len(df) + 1).astype(str)
或者将
f-string
s与
enumerate
一起使用:

df['col1'] = [f'{b}_{a}' for a, b in enumerate(df['col1'], 1)]
print (df)
  col1
0  A_1
1  B_2
2  C_3
3  D_4

太好了,这正是我想要的