在 Groupby 中按日期聚合 Pandas DataFrame 计数
Aggregate Pandas DataFrame Counts by Dates in Groupby
我有一个 Pandas DataFrame,其中包含第一个和最后一个日期列,我从中构建了一个 dr
字段,其中包含范围内的日期列表:
_id FID first_seen last_seen dr
607abc 1925 2020-11-13 2021-04-22 DatetimeIndex(['2020-11-13', '2020-11-14', '20...])
608abd 1925 2021-03-05 2021-03-07 DatetimeIndex(['2021-03-05', '2021-03-06', '20...])
442xae 1331 2020-05-05 2021-04-22 DatetimeIndex(['2020-05-05', '2021-04022', '20...])
...
对于每个 FID
,对于与该 FID 关联的每个日期,我需要获取该日期 _id
的计数。比如从上面,如下:
FID date count(_id)
1925 2020-11-13 44
1925 2020-11-14 46
...
1925 2021-04-22 61
1331 2020-05-05 189
1331 2020-05-06 190
...
我知道我需要先按 FID 分组,然后得到 first_seen 的最小值和 last_seen 的最大值,然后我卡住了...
让我们试试explode
df.explode('dr').groupby(['FID','dr']).size()
或者我们可以在这里尝试value_counts
df.explode('dr').value_counts(['FID','dr'])
我有一个 Pandas DataFrame,其中包含第一个和最后一个日期列,我从中构建了一个 dr
字段,其中包含范围内的日期列表:
_id FID first_seen last_seen dr
607abc 1925 2020-11-13 2021-04-22 DatetimeIndex(['2020-11-13', '2020-11-14', '20...])
608abd 1925 2021-03-05 2021-03-07 DatetimeIndex(['2021-03-05', '2021-03-06', '20...])
442xae 1331 2020-05-05 2021-04-22 DatetimeIndex(['2020-05-05', '2021-04022', '20...])
...
对于每个 FID
,对于与该 FID 关联的每个日期,我需要获取该日期 _id
的计数。比如从上面,如下:
FID date count(_id)
1925 2020-11-13 44
1925 2020-11-14 46
...
1925 2021-04-22 61
1331 2020-05-05 189
1331 2020-05-06 190
...
我知道我需要先按 FID 分组,然后得到 first_seen 的最小值和 last_seen 的最大值,然后我卡住了...
让我们试试explode
df.explode('dr').groupby(['FID','dr']).size()
或者我们可以在这里尝试value_counts
df.explode('dr').value_counts(['FID','dr'])