pandas 如何用python函数和df查找未填充的天数

wwwo4jvm  于 2023-05-21  发布在  Python
关注(0)|答案(1)|浏览(210)

我有一个Pandasdf,我需要一个函数,将返回名称和日期,如果这些值 最近三天都不在国防部
例如我的df1:

| date       | name           |
| ---------- | -------------- |
| 2022-08-05 | Alex           |
| 2022-08-07 | Alex           |

我试着用函数来解决:

def checker (table, name):
    if len(table[table.names == name]) == 3:
        msg = '\n All good'
    else:
        name_list = [*table['name'].unique()]
        msg = '\n No data for:'
        for name in name_list:
            msg += f'\n {name}'
return msg

但是我怎样才能为msg中缺少的名字添加日期呢?或者也许可以优化我的功能?
在ouptup我需要一个消息的名称和日期,如果没有在我的df的那一天的datat:

2022-08-06 Alex
v2g6jxz6

v2g6jxz61#

这可以通过聚合函数来实现。
首先,按用户对条目进行分组:

grouped = table.groupby("name")

然后计算条目数并获得每个用户的最后日期 (注意:这不是最初的要求)

aggreg = grouped.agg({"name": "count", "date": "max"})

要获取missing日期,需要将"max"替换为自定义函数:

aggreg = grouped.agg(
    {"name": "count",
     "date": lambda dates: """code to find the missing
             date in the dates Series for a single user"""})

你可以过滤那些计数小于3的:

res = aggreg[aggreg.name < 3]

您的用户将在res.index中,日期将在res.date中。

相关问题