我有一个包含几列的数据框。
示例数据:
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'
答案 0 :(得分:2)
将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
如果不是默认的RangeIndex
:
df['col1'] = df['col1'] + '_' + pd.RangeIndex(1, len(df) + 1).astype(str)
或将f-string
与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