Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据其他列获取最新值';熊猫的价值观_Python_Pandas_Dataframe - Fatal编程技术网

Python 根据其他列获取最新值';熊猫的价值观

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

我有一个按用户排序的预订和搜索数据集。我有一个列,当是预订时为true,当是搜索时为false,我需要添加另一个列“previous_booking”,该列需要具有最新预订的值

   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']