【问题标题】:Pandas group by using for loop, editing, then combiningPandas 通过使用 for 循环、编辑、然后组合进行分组
【发布时间】:2021-07-08 02:53:00
【问题描述】:

我有下表

      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)

有没有办法将这些值组合在一起或完全实现这一点?

【问题讨论】:

标签: python pandas shift


【解决方案1】:

您可以执行以下操作:

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

结果:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    相关资源
    最近更新 更多