MEhsan
MEhsan

Reputation: 2324

How to Add Incremental Numbers to a New Column Using Pandas

I have this simplified dataframe:

ID   Fruit
F1   Apple
F2   Orange
F3   Banana 

I want to add in the begining of the dataframe a new column df['New_ID'] which has the number 880 that increments by one in each row.

The output should be simply like:

New_ID   ID   Fruit
880      F1   Apple
881      F2   Orange
882      F3   Banana  

I tried the following:

df['New_ID'] = ["880"] # but I want to do this without assigning it the list of numbers literally

Any idea how to solve this?

Thanks!

Upvotes: 116

Views: 285971

Answers (8)

Olsgaard
Olsgaard

Reputation: 1582

If you have a long, chained expression, and you want to add a column with incrementing values, but you don't know the length of the dataframe (due to some of the chained expressions being groups or aggregations) you can also accomplish this by using assign() and a lambda

df.assign(New_ID = lambda x: range(880, 880 + len(x))

Upvotes: 3

Kartik
Kartik

Reputation: 8683

Here:

df = df.reset_index()
df = df.rename(columns={"index":"New_ID"})
df['New_ID'] = df.index + 880

Upvotes: 93

Joselin Ceron
Joselin Ceron

Reputation: 502

I used the follow code:

df.insert(0, 'id', range(1, 1 + len(df)))

So my "id" columns is:

1, 2, 3, ...

Upvotes: 10

snark
snark

Reputation: 2887

For a pandas DataFrame whose index starts at 0 and increments by 1 (i.e., the default values) you can just do:

df.insert(0, 'New_ID', df.index + 880)

if you want New_ID to be the first column. Otherwise this if you don't mind it being at the end:

df['New_ID'] = df.index + 880

Upvotes: 2

Bahati Felix
Bahati Felix

Reputation: 21

import numpy as np

df['New_ID']=np.arange(880,880+len(df.Fruit))
df=df.reindex(columns=['New_ID','ID','Fruit'])

Upvotes: 2

naman
naman

Reputation: 490

You can also simply set your pandas column as list of id values with length same as of dataframe.

df['New_ID'] = range(880, 880+len(df))

Reference docs : https://pandas.pydata.org/pandas-docs/stable/missing_data.html

Upvotes: 33

Alexander
Alexander

Reputation: 109520

df = df.assign(New_ID=[880 + i for i in xrange(len(df))])[['New_ID'] + df.columns.tolist()]

>>> df
   New_ID  ID   Fruit
0     880  F1   Apple
1     881  F2  Orange
2     882  F3  Banana

Upvotes: 10

piRSquared
piRSquared

Reputation: 294218

df.insert(0, 'New_ID', range(880, 880 + len(df)))
df

enter image description here

Upvotes: 206

Related Questions