我想为新的pandas数据帧生成一个运行索引(例如A00055,A00056 ......)。我尝试使用zfill
用零填充我的字符串,但似乎无法使其工作。我的代码:
df.reset_index()
entry_id = 55
df['ref'] = "A" + (df.index + entry_id).map(str) # how do I include zfill(5) here?
print(df['ref']) # output: A55, A56...
如何做到这一点?非常感谢任何帮助!
答案 0 :(得分:1)
您可以通过构建一个正确长度的Index
对象来构建一个新列,然后使用astype(str)
转换为str
,然后调用str.zfill(5)
并添加字母'A' “:
In[62]:
df['ref'] = 'A' + pd.Index(np.arange(entry_id, len(df.index) + entry_id)).astype(str).str.zfill(5)
df
Out[62]:
0 ref
0 -0.284920 A00055
1 -0.264921 A00056
2 0.190505 A00057
3 -0.594822 A00058
4 0.501090 A00059
5 0.696072 A00060
6 0.221020 A00061
7 0.565674 A00062
8 2.193464 A00063
9 -0.013642 A00064
10 -0.197993 A00065
11 2.200986 A00066
12 -2.239770 A00067
13 0.976282 A00068
14 0.712886 A00069
15 0.691492 A00070
16 1.112054 A00071
17 -0.536423 A00072
18 -1.551099 A00073
19 -0.679287 A00074
这里构建一个Index
传递一个使用np.arange
构建的numpy,它从entry_id
开始,并以现有索引的长度再加上entry_id
结束。然后,我们使用astype
进行投射,然后使用str.zfill
并添加“A”
您也可以使用RangeIndex
执行此操作,这样可以提供更紧凑的版本:
df['ref'] = 'A' + pd.RangeIndex(entry_id, len(df.index) + entry_id).astype(str).str.zfill(5)