【问题标题】:Comparing pandas rows that have identical values in columns, and then group by the unique id比较在列中具有相同值的 pandas 行,然后按唯一 id 分组
【发布时间】:2020-10-10 08:14:07
【问题描述】:

虽然有关 stackoverflow 的一些问题在某种程度上指定了我希望在 pandas 数据帧上进行的相同查询,但没有人能够识别共享相同值的多个行。

为了解释我的问题,我有一个数据框,其中包含有关他们决定使用健身房的人员/时间段的信息。 看起来是这样的,

,User,Time,Date
0, User 1 ,12:00PM ,10/5/20             (Identical 3 times)
1, User 2 ,12:00PM ,10/5/20             (Identical 3 times)
2, User 3 ,12:00PM ,10/5/20
3, User 1 ,1:00PM ,10/4/20              (Identical 2 times)
4, User 2 ,1:00PM ,10/4/20              (Identical 2 times)
5, User 5 ,1:00PM ,10/4/20
6, User 6 ,1:00PM ,10/4/20
7, User 7 ,12:00PM ,10/4/20
9, User 1 ,11:00AM ,10/4/20            (Identical 1 time)
10, User 2 ,11:00AM ,10/4/20           (Identical 1 time)
11, User 3 ,10:00AM ,10/4/20
12, User 6 ,10:00AM ,10/4/20
13, User 7 ,10:00AM ,10/4/20

我的目标是创建一个数据框,该数据框将按框架中每一行的“时间”和“日期”对“名称”列进行分组,这将创建与注册时间/日期相同的用户计数另一个用户。 通过在上面的数据集上这样做,它应该看起来有点像-

 ,User, User, Count of identical gym times
0, User 1 , User 2, 3 
1, User 3 , User 1, 1 
2, User 3 , User 2, 1
3, User 1 , User 5, 1
4, User 2 , User 5, 1
5, User 2 , User 6, 1
6, User 3 , User 6, 1
7, User 3 , User 7, 1
8, User 4 , User 6, 1
9, User 4 , User 7, 1

我遵循了一些指南,试图计算行相似的次数,

df.groupby('Date').User.nunique()

会回来,

Date
2020-08-20     6
2020-08-21    13
2020-08-22    15
2020-08-23    18
2020-08-24    25
2020-08-25    24
2020-08-26    24
2020-08-27    24
2020-08-28    20
2020-08-29    12
2020-08-30     8

这没有帮助。这个“查询”还有其他指南吗?

【问题讨论】:

  • 从第 3 行到第 7 行的时间和日期是相同的,您的意思是您希望哪些用户注册的特定日期和时间?
  • 考虑到用户 1 和用户 2 每周注册 3 次相同的会话,我更倾向于将参加“特定日期和时间”的用户分组在一起;我想计算所有出现的次数。您的回答通过将它们放入数组中帮助我将其概念化,但现在我正在尝试操作数组以确定一起注册的用户。

标签: python pandas


【解决方案1】:

这个输出有帮助吗?

df.groupby(['Time','Date'],as_index=False).agg({'User':lambda x:  [item for item in x]})

      Time     Date                          User
0  10:00AM  10/4/20         [User3, User6, User7]
1  11:00AM  10/4/20                [User1, User2]
2  12:00PM  10/4/20                       [User7]
3  12:00PM  10/5/20         [User1, User2, User3]
4   1:00PM  10/4/20  [User1, User2, User5, User6]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2020-01-30
    • 2022-06-22
    • 2022-11-17
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多