Pandas 使用 for 循环分组,编辑,然后合并

Pandas group by using for loop, editing, then combining

我有以下Table

      time                   userid   market   device    query      querytype   browser
0     2020-07-01  04:47:21   A        EN-US    PC        WEATHER    WEATHER     EDGE
1     2020-07-01  07:23:52   C        ZH-CN    MOBILE    RECIPIES   FOOD        SAFARI
2     2020-07-01  15:32:57   D        EN-GB    TABLET    DOGS       ANIMALS     CHROME
3     2020-07-01  17:16:21   A        EN-CA    PC        SEATTLE    CITY        EDGE
4     2020-07-01  21:07:21   D        EN-GB    TABLET    DOG FOOD   ANIMAL      CHROME
5     2020-07-01  22:26:21   E        DE-DE    MOBILE    IPHONE     PRODUCTS    CHROME

我正在尝试获取 userid 的最后一个查询。

  last_query  
0        NaN  
1        NaN 
2        NaN 
3    WEATHER  
4       DOGS
5        NaN

我正在使用以下代码来解决问题,但我没有得到任何值。

s = pd.Series()
for name, value in df.groupby('userid'):
    userid = name
    last_query = value['query'].shift()
    s.append(last_query)

是否有任何方法可以将这些值组合在一起或完全实现这一点?

您可以执行以下操作:

df_last_queries = df.groupby('userid').shift(1)['query']

结果:

0        NaN
1        NaN
2        NaN
3    WEATHER
4       DOGS
5        NaN

重要提示:time 列需要按升序排列(看起来是这样)。