如何使用函数根据欧洲日期聚合数据帧列并将其排序为四分之一?

2024-09-29 00:19:06 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我是新来的熊猫,正在努力解决一个具有挑战性的问题

我有两个数据帧:

Df1

Superhero ID    Superhero   City
212121          Spiderman   New york
364331          Ironman     New york
678523          Batman      Gotham
432432          Dr Strange  New york
665544          Thor        Asgard
123456          Superman    Metropolis
555555          Nightwing   Gotham
666666          Loki        Asgard

Df2

SID       Mission End date
665544    10/10/2020
665544    03/03/2021
212121    02/02/2021
665544    05/12/2020
212121    15/07/2021
123456    03/06/2021
666666    12/10/2021

我需要创建一个新的df,总结每个城市有多少英雄,他们的任务将在哪个季度完成。另请注意,日期以欧洲格式so(日/月/年)书写

我可以用这句话总结出每个城市有多少英雄:

df_Count = pd.DataFrame(df1.City.value_counts().reset_index())

这给了我:

 City       Count
New york     3
Gotham       2
Asgard       2
Metropolis   1

我需要添加另一个列,列出英雄是否可以在特定的区域内完成任务

Quarter 1 – Apr, May, Jun
Quarter 2 – Jul, Aug, Sept
Quarter 3 – Oct, Nov, Dec
Quarter 4 – Jan, Feb, Mar

如果Df2中的英雄ID没有任务结束日期,则计数应增加1。如果他们确实有一个结束日期,并且它分为

所以最后应该是这样的:

        City    Total Count    No. of heroes free in Q3    No. of heroes free in Q4   Free in Q1 2021+
    New york       3               2                           0                           1
    Gotham         2               2                           2                           0
    Asgard         2               1                           2                           0
    Metropolis     1               0                           0                           1 

我想我需要使用python datetime库来获取当前的日期时间。然后创建一个自定义函数,我可以使用lambda将其应用于每一行。类似于以下代码的内容:

    from datetime import date

today = date.today()
q1 = '05/04/2021'
q3 = '05/10/2020'
q4 = '05/01/2021'

count=0
def QuarterCount(Eid,AssignmentEnd )



    if df1['Superhero ID'] == df2['SID'] :

        if df2['Mission End date']<q3:
            ++count

             return count
          
        elif df2['Mission End date']>q3 && <q4:

            ++count

                return count
          
   elif df2['Mission End date']>q1:\

            ++count

                return count

     df['No. of heroes free in Q3'] = df1[].apply(lambda x(QuarterCount))

请帮助我更正语法或逻辑,或者让我知道是否有更好的方法。学习熊猫很有挑战性,但也很有趣。如果您能提供任何帮助,我将不胜感激:)


Tags: inidcitynewdatecountenddf2