如果在 groupby 中出现条件,则 Python (Pandas)

Posted

技术标签:

【中文标题】如果在 groupby 中出现条件,则 Python (Pandas)【英文标题】:Python (Pandas) if condition inside groupby 【发布时间】:2021-09-13 20:27: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

我正在尝试回答以下问题: 在包含用户下一个查询的表中添加一列

我真的没有任何线索。 请帮忙

【问题讨论】:

您好,请尽量包含相关信息和代码 sn-ps。这样,我们才能更好地理解和帮助您 【参考方案1】:

您正在寻找班次,请参阅:Pandas compare next row 确保您首先按时排序

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

【讨论】:

它只会将整列移动-1,但我需要按ID对其进行分组。有什么建议吗? 以上编辑 - 转换为一个班轮,在班次前添加 groupby

以上是关于如果在 groupby 中出现条件,则 Python (Pandas)的主要内容,如果未能解决你的问题,请参考以下文章

SQL内外连

链接查询和分组查询

连接查询和分组查询

sql分组查询和连接查询

groupby+agg

第十一章 链接查询和分组查询