0

There is a dataframe consisting of some actions that users do on the app. I want to add a new column, and store the previous action of the user, using a grupby and shift:

dataframe:

session_id | action
100        | click
100        | buy
101        | open
101        | buy

So I use:

df['prev_action'] = df.groupby('session_id')['action'].shift()

Result:

session_id | action | prev_action
100        | click  | NA
100        | buy    | click
101        | open   | NA
101        | buy    | open

It works fine and the result seems fine too, but I get the SettingWithCopyWarning:

SettingWithCopyWarning:

A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

I know a littl about SettingWithCopyWarning, and I want to know how can I change my code to write a better one and don't get the warning (or should I just ignore the warning in this case?)

Saeed Esmaili
  • 764
  • 3
  • 12
  • 34

0 Answers0