我想为一个新的熊猫数据帧生成一个运行索引(例如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/

10-12 23:48