I want to add a new column called id
to my pandas DataFrame. If the value of id
is just a fixed number, then I can create a new column as follows:
id_value = 1 df.insert(0, 'id', id_value)
However, in my case I need to create batches of 3 rows, as follows:
id 1 1 1 2 2 2 3 3 3 ...
How can I do it?
Advertisement
Answer
You can create array by np.arange
with integer division by 3
, so starting by 0
, if need custom first number add id_value
:
id_value = 1 df.insert(0, 'id', np.arange(len(df)) // 3 + id_value)
If there is default index values also working:
df = pd.DataFrame({'a':np.random.randint(10, size=10)}) id_value = 1 df.insert(0, 'id', df.index // 3 + id_value) print (df) id a 0 1 2 1 1 8 2 1 5 3 2 3 4 2 1 5 2 1 6 3 9 7 3 2 8 3 7 9 4 5