Home > Enterprise >  How can I iterate over specific index in pandas?
How can I iterate over specific index in pandas?

Time:10-28

So I have a list of index close_index I want to iterate over these specific index and update the column values.

hhinc8,owncar,longitude,latitude,category
5,1,-82.99194508,40.04649963,LRLC
6,2,-82.99584706,40.03738548,LRHC
5,1,-82.99697268,40.02674247,LRLC
6,2,-82.99160441,40.03612997,LRHC
1,2,-82.994716,40.04691778,ERHC
2,1,-82.99793728,40.04385713,ERLC
3,2,-82.98986012,40.03789279,ERHC
.
.
.

close_index =[1,3,4]

now in my code I update the all the close_index's hhinc8 like df.loc[close_index,'hhinc8']=2 now I want to update the category of all the close_index by checking the owncar variable. If owncar is 1 category should be LRLC else it should be LRHC.

I thought the best way to do this is by looping over all the index in close_index and checking the owncar and updating the category.

But I am unable to figure out a way to loop over specific index. As the dataset I have is very big, looping over the whole dataset is very inefficient. If there is a better way to do this, Please let me know.

CodePudding user response:

here is one way to do it

# create a dictionary to map owncar to the category value
d={1: 'LRLC', 2: 'LRHC'}


close_index =[1,3,4]

df['category'] = df.loc[close_index]['owncar'].map(d)
df

or simply

hhinc8  owncar  longitude   latitude    category
0   5   1   -82.991945  40.046500   LRLC
1   6   2   -82.995847  40.037385   LRHC
2   5   1   -82.996973  40.026742   LRLC
3   6   2   -82.991604  40.036130   LRHC
4   1   2   -82.994716  40.046918   LRHC
5   2   1   -82.997937  40.043857   LRLC
6   3   2   -82.989860  40.037893   LRHC

CodePudding user response:

You can do the following, I didn't test though,

df[df["owncar"]==1].loc[close_index,'category']=LRLC
df[df["owncar"]!=1].loc[close_index,'category']=LRHC
  • Related