I have the following data frame:
š >>> data = {'seasons': ['season_2', 'season_3', 'season_4', 'season_5', 'season_6', 'season_7', 'season_1']}
š >>> df = pd.DataFrame(data)
š >>> df['season_1'] = 1
š >>> df['season_2'] = 2
š >>> df['season_3'] = 3
š >>> df['season_4'] = 4
š >>> df['season_5'] = 5
š >>> df['season_6'] = 6
š >>> df['season_7'] = 7
š >>>
š >>> df
seasons season_1 season_2 season_3 season_4 season_5 season_6 season_7
0 season_2 1 2 3 4 5 6 7
1 season_3 1 2 3 4 5 6 7
2 season_4 1 2 3 4 5 6 7
3 season_5 1 2 3 4 5 6 7
4 season_6 1 2 3 4 5 6 7
5 season_7 1 2 3 4 5 6 7
6 season_1 1 2 3 4 5 6 7
How do I make the a new column that has the value of the column specified in seasons for the given row? e.g. I expect season_values to have a value of:
season_values = [2, 3, 4, 5, 6, 7, 1]
TRY:
df = df.assign(season_values = df.apply(lambda x: x[x['seasons']],1))
# df['season_values'] = df.apply(lambda x: x[x['seasons']],1)
Another option via melt:
melt = df.melt(['seasons'], ignore_index=False)
df['season_value'] = melt.loc[melt['seasons'] == melt['variable']]
Try
df.lookup(df.index,df.seasons)
Out[234]: array([2, 3, 4, 5, 6, 7, 1])
Or
df.values[df.index,df.columns.get_indexer(df.seasons)]
Out[235]: array([2, 3, 4, 5, 6, 7, 1], dtype=object)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With