gpt4 book ai didi

python - pandas - 如何过滤 "most frequent"日期时间对象

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:51 33 4
gpt4 key购买 nike

我正在使用如下所示的 DataFrame:

User_ID    Datetime
01 2014-01-01 08:00:00
01 2014-01-02 09:00:00
02 2014-01-02 10:00:00
02 2014-01-03 11:00:00
03 2014-01-04 12:00:00
04 2014-01-04 13:00:00
05 2014-01-02 14:00:00

我想根据日期时间列在某些条件下过滤用户,例如仅过滤每月出现一次的用户,或仅过滤仅在夏季出现的用户等。

到目前为止,我已将 df 分组为:

g = df.groupby(['User_ID','Datetime']).size()

获取每个用户的时间“痕迹”:

User_ID    Datetime
01 2014-01-01 08:00:00
2014-01-02 09:00:00
02 2014-01-02 10:00:00
2014-01-03 11:00:00
03 2014-01-04 12:00:00
04 2014-01-04 13:00:00
05 2014-01-02 14:00:00

然后我应用了一个掩码来过滤,例如,具有多个跟踪的用户:

mask = df.groupby('User_ID')['Datetime'].apply(lambda g: len(g)>1)
df = df[df['User_ID'].isin(mask[mask].index)]

所以这很好。我正在寻找一个函数而不是 lambda g: len(g)>1正如我之前所说,能够过滤不同条件下的用户。特别是过滤每月出现一次的用户。

最佳答案

只要您的“日期时间”数据类型已经是日期时间并且您正在运行 pandas 版本 0.15.0 或更高版本,那么除了用户 ID 之外,您还可以按月份进行分组,然后通过检查组的长度来过滤结果:

In [29]:

df.groupby(['User_ID',df['Datetime'].dt.month]).filter(lambda x: len(x) > 1)
Out[29]:
User_ID Datetime
0 1 2014-01-01 08:00:00
1 1 2014-01-02 09:00:00
2 2 2014-01-02 10:00:00
3 2 2014-01-03 11:00:00

关于python - pandas - 如何过滤 "most frequent"日期时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29366572/

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