Saurabh
Saurabh

Reputation: 121

How to create the column in pandas based on values of another column

I have created a new column, by adding values from one column, to the index of the column from which I have created this new column. However, my problem is the code works fine when I implement on sample column, but when I pass the already existing dataframe, it throws the error, "can only perform ops with scalar values". As per what I found is the code expects dist and that is why it is throwing error.

I tried converting the dataframe to dictionary or to a list, but no luck.

 df = pd.DataFrame({'Name': ['Sam', 'Andrea', 'Alex', 'Robin', 'Kia',    'Sia'], 'Age':[14,25,55,8,21,43], 'd_id_max':[2,1,1,2,0,0]})`

df['Expected_new_col'] = df.loc[df.index + df['d_id_max'].to_list, 'Age'].to_numpy()

print(df)

error: can only perform ops with scalar values.

This is the dataframe I want to implement this code:

      Weight   Name     Age     1     2   abs_max d_id_max
  0     45     Sam      14     11.0  41.0   41.0    2
  1     88     Andrea   25     30.0 -17.0   30.0    1
  2     56     Alex     55    -47.0 -34.0   47.0    1
  3     15     Robin    8      13.0  35.0   35.0    2
  4     71     Kia      21     22.0  24.0   24.0    2
  5     44     Sia      43     2.0   22.0   22.0    2
  6     54     Ryan     45     20.0  0.0    20.0    1

Upvotes: 0

Views: 46

Answers (2)

ignoring_gravity
ignoring_gravity

Reputation: 10476

Writing your new column like this will not return an error:

df.loc[df.index + df['d_id_max'], 'Age'].to_numpy() 

EDIT: You should first format d_id_max as int (or float):

df['d_id_max'] = df['d_id_max'].astype(int)

Upvotes: 1

Saurabh
Saurabh

Reputation: 121

The solution was very simple, I was getting the error because the data type of the column d_id_max was object type, which should be either float or integer, so i change the data type and it worked fine.

Upvotes: 0

Related Questions