2017-05-17 10 views
1

新しいパンダデータフレームの実行インデックス(たとえばA00055、A00056 ...)を生成したいと思います。私はzfillを使用して私の文字列をゼロで埋めようとしましたが、うまく動作しないようです。私のコード:Python Pandas:zfill for rangeIndex

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

IIUC:私たちは、その後、あなたはまた、よりコンパクトなバージョンを提供しますRangeIndexを使用してこれを行うことができます「」

astypeを用いて鋳造し、その後str.zfillを使用して、先頭に追加'A' + pd.Index(np.arange(55、len(df.index)+ 1))。astype(str).str.zfill(5) ' – EdChum

+0

@EdChumありがとう!私はそれを受け入れることができるようにあなたの答えを回答として投稿したいですか? –

+0

私の答えを見て、私のコメントは間違っていたが、投稿された答えが正しい – EdChum

答えて

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通過を構築entry_idで始まり、既存の索引の長さentry_idで終わるnp.arangeを使用して構成されたnumpy。 =あなたは `のdf [「参照」]行うことができます

df['ref'] = 'A' + pd.RangeIndex(entry_id, len(df.index) + entry_id).astype(str).str.zfill(5)