我想为一个新的熊猫数据帧生成一个运行索引(例如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...
如何才能做到这一点?任何帮助是极大的赞赏!
最佳答案
您可以通过构造正确长度的Index
对象,然后使用str
强制转换为astype(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,该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)
关于python - Python Pandas :zfill用于rangeIndex,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44020892/