Shawn Y
Shawn Y

Reputation: 27

Reading data from Dataframe using other Dataframe data as iloc inputs

I'm trying to grab value from an existing df using iloc coordinates stored in another df, then stored that value in the second df.

df_source (source):

        Category1   Category2   Category3
Bucket1 100 200 300
Bucket2 400 500 600
Bucket3 700 800 900

df_coord (coordinates):

Index_X Index_Y 
0   0
1   1
2   2

Want: df_coord

Index_X Index_Y Added
0   0   100
1   1   500
2   2   900

I'm more familiar with analytical language like SAS, where data is processed one line at a time, so the natural approach for me was this:

df_coord['Added'] = df_source.iloc[df_coord[Index_X][df_coord[Index_Y]]

When I tried this I got an error, which I understand as df_coord[Index_X] does not refer to the data on the same row. I have seen a few posts where using a "axis=1" option worked for their respective cases, but I can't figure out how to apply it to this case. Thank you.

Upvotes: 1

Views: 46

Answers (1)

yatu
yatu

Reputation: 88246

You could index the underlying ndarray, i.e calling the values method, using the columns in df_coord as first and second axis:

df_coord['Added'] = df_source.values[df_coord.Index_X, df_coord.Index_Y]

     Index_X  Index_Y Added
0        0      0      100
1        1      1      500
2        2      2      900

Upvotes: 1

Related Questions