gpt4 book ai didi

python - Pandas 的不同天数

转载 作者:行者123 更新时间:2023-12-01 00:04:02 24 4
gpt4 key购买 nike

我有以下架构:

            H   T     datetime
002599f58 A 2019-09-23
002599f58 A 2019-09-23
002599f58 A 2019-09-23
002599f58 A 2019-09-26
002599f58 C 2019-09-26
005344fe8 C 2019-09-30
005344fe8 D 2019-10-02
005344fe8 D 2019-10-05

我需要做的是计算 H 在 T 中的不同天数。我已经尝试过:

grouper = Grouper(key="datetime", freq="1D")
df = cdr.groupby(["H", "T", grouper])["datetime"].nunique().reset_index(name="numdays")

以及其他类型,例如size()。我现在有 14 天,但是当我对值进行排序时,它们给我的数字大于 14,所以我知道这些是错误的,但我不知道为什么。

预期输出是一个数据帧

H           T   numdays
002599f58 A 2 (23 & 26)
002599f58 C 1 (26)
005344fe8 C 1 (30)
005344fe8 D 2 (02 & 05)

它告诉我,对于每个不同的 H 和 T,H 在 T 中的不同天数,其中 numdays 不能大于 14(因为这是我的所有天数)。我不需要括号中的数据,只是为了显示值的来源。

最佳答案

我相信您需要删除 Grouper 并为日期添加 Series.dt.date :

cdr['datetime'] = pd.to_datetime(cdr['datetime'])

cdr['dates'] = cdr['datetime'].dt.date
df = cdr.groupby(["H", "T"])["dates"].nunique().reset_index(name="numdays")
print (df)

H T numdays
0 002599f58 A 2
1 002599f58 C 1
2 005344fe8 C 1
3 005344fe8 D 2

您可以通过将输出转换为列表来测试新旧解决方案:

print (cdr)
H T datetime
0 002599f58 A 2019-09-23 12:45:10
1 002599f58 A 2019-09-23 02:45:10
2 002599f58 A 2019-09-23 12:45:50
3 002599f58 A 2019-09-26 12:25:10
4 002599f58 C 2019-09-26 10:45:10
5 005344fe8 C 2019-09-30 12:25:10
6 005344fe8 D 2019-10-02 12:45:00
7 005344fe8 D 2019-10-05

cdr['dates'] = cdr['datetime'].dt.date
print (cdr.groupby(["H", "T"])["dates"].apply(list))
H T
002599f58 A [2019-09-23, 2019-09-23, 2019-09-23, 2019-09-26]
C [2019-09-26]
005344fe8 C [2019-09-30]
D [2019-10-02, 2019-10-05]
Name: dates, dtype: object

grouper = pd.Grouper(key="datetime", freq="1D")
print (cdr.groupby(["H", "T", grouper])["datetime"].apply(list))
H T datetime
002599f58 A 2019-09-23 [2019-09-23 12:45:10, 2019-09-23 02:45:10, 201...
2019-09-26 [2019-09-26 12:25:10]
C 2019-09-26 [2019-09-26 10:45:10]
005344fe8 C 2019-09-30 [2019-09-30 12:25:10]
D 2019-10-02 [2019-10-02 12:45:00]
2019-10-05 [2019-10-05 00:00:00]
Name: datetime, dtype: object

关于python - Pandas 的不同天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60114033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com