Python Pandas:zfill for rangeIndex

时间:2017-05-17 09:31:29

标签: python pandas

我想为新的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...

如何做到这一点?非常感谢任何帮助!

1 个答案:

答案 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)