【问题标题】:Creating Function to Count Values Based on Datetime创建函数以根据日期时间计算值
【发布时间】:2022-11-29 11:01:46
【问题描述】:

我有这样的数据:

activity_date company_name new_company_status calling visit quotation po
03/10/2022 ABC Yes Yes No No No
04/10/2022 ABC No No No Yes Yes
05/10/2022 DEF No Yes Yes No No
06/10/2022 XYZ Yes No Yes Yes No
07/10/2022 DEF No No No Yes Yes
08/10/2022 XYZ No Yes No No Yes
  1. 我想创建一个函数来检查每个相同的company_name,其中至少有一个new_company_status 为“是”,然后变成“是”calling,并计算它的总和,即使在不同的日期。
  2. 我想创建一个函数来检查每个相同的company_name,即使在不同的日期,calling 也是“是”,po 也是“是”。

    这是伪代码我创建的:

    1.

    for every same company name:
        if 'new_company_status' = 'Yes':
            check 'activity_date'        # for new company status if it is a Yes
        if 'calling' = 'Yes':
            check 'activity_date'        # for calling if it is a Yes
        if calling_date >= new_company_date:
            new_company to call =+ 1
    
    for every same company name:
        if 'calling' = 'Yes':
            check 'activity_date'        # for calling if it is a Yes
        if 'visit' = 'No':
            if 'quotation' = 'No':
                if 'po' = 'Yes':
                    check 'activity_date'   # for po if it is a Yes
        if po_date >= calling_date:
            call to po += 1
    

    预期产出:

    1. 1
    2. 3

      如何将伪代码编码成Python?谁能帮我?提前谢谢你。

【问题讨论】:

  • 您没有提供预期的输出
  • 你的伪代码对我来说毫无意义。 check 'activity_date' new_company to call =+ 1 是什么意思?
  • @mozway 我已经编辑了问题

标签: python function datetime count


【解决方案1】:

假设一个数据帧,你可以使用布尔运算和groupby.any

m1 = df['new_company_status'].eq('Yes')
m2 = df['calling'].eq('Yes')

(m1&m2).groupby(df['company_name']).any().sum()

输出:1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多