首页 > 解决方案 > 将字符串编号连接到系列索引的开头

问题描述

我有以下系列:

ser = pd.Series(["foo","bar","a",4,5], index=["a", "b", "c", "d", "e"])
ser

a    foo
b    bar
c      a
d      4
e      5
dtype: object

我想在索引之前连接一个递增的字符串编号,如下所示:

#期望的输出

0_a    foo
1_b    bar
2_c      a
3_d      4
4_e      5
dtype: object

我试过这个:

increment = iter(range(0,10))

ser.index = str(next(increment))+"_"+ser.index

但字符串编号不会增加。我应该如何处理这个?

标签: pythonpandas

解决方案


将列表推导与f-strings 和一起使用enumerate

ser.index = [f'{a}_{b}' for a, b in enumerate(ser.index)]

或加入RangeIndex转换为字符串str.cat

ser.index = pd.RangeIndex(len(ser)).astype(str).str.cat(ser.index, sep='_')

或者:

ser.index = pd.RangeIndex(len(ser)).astype(str) + '_' + ser.index

print (ser)
0_a    foo
1_b    bar
2_c      a
3_d      4
4_e      5
dtype: object

推荐阅读