Python 根据其他列获取最新值';熊猫的价值观
我有一个按用户排序的预订和搜索数据集。我有一个列,当是预订时为true,当是搜索时为false,我需要添加另一个列“previous_booking”,该列需要具有最新预订的值Python 根据其他列获取最新值';熊猫的价值观,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个按用户排序的预订和搜索数据集。我有一个列,当是预订时为true,当是搜索时为false,我需要添加另一个列“previous_booking”,该列需要具有最新预订的值 user visit_type booking search visit_num hotel 0 user1 busqueda False True 1 NaN 1 user1 busqueda False
user visit_type booking search visit_num hotel
0 user1 busqueda False True 1 NaN
1 user1 busqueda False True 2 NaN
2 user1 reserva True False 3 15
3 user2 busqueda False True 1 NaN
4 user2 busqueda False True 2 NaN
5 user2 reserva True False 3 156
6 user2 reserva True False 3 156
7 user2 busqueda False True 4 NaN
8 user2 busqueda False True 5 NaN
9 user2 reserva True False 6 123
我需要这样的东西:
user visit_type booking search visit_num hotel latest_booking
0 user1 busqueda False True 1 NaN NaN
1 user1 busqueda False True 2 NaN NaN
2 user1 reserva True False 3 15 NaN
3 user2 busqueda False True 1 NaN NaN
4 user2 busqueda False True 2 NaN NaN
5 user2 reserva True False 3 156 NaN
6 user2 reserva True False 3 156 156
7 user2 busqueda False True 4 NaN NaN
8 user2 busqueda False True 5 NaN NaN
9 user2 reserva True False 6 123 156
10 user2 reserva True False 6 135 123
使用
shift
+ffill
,然后将booking=False
行转换为NaN
df['latest_booking'] = df.groupby('user')['hotel'].apply(lambda x: x.shift().ffill())
df.loc[~df['booking'], 'latest_booking'] = np.nan
print(df)
user visit_type booking search visit_num hotel latest_booking
0 user1 busqueda False True 1 NaN NaN
1 user1 busqueda False True 2 NaN NaN
2 user1 reserva True False 3 15.0 NaN
3 user2 busqueda False True 1 NaN NaN
4 user2 busqueda False True 2 NaN NaN
5 user2 reserva True False 3 156.0 NaN
6 user2 reserva True False 3 156.0 156.0
7 user2 busqueda False True 4 NaN NaN
8 user2 busqueda False True 5 NaN NaN
9 user2 reserva True False 6 123.0 156.0
尝试df['previousbooking']=df['latestbooking']