首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python/Pandas Dataframe每天提供独特的数据

使用Python/Pandas Dataframe每天提供独特的数据
EN

Stack Overflow用户
提问于 2018-07-12 03:57:34
回答 1查看 188关注 0票数 0

我正在尝试使用pandas处理每天的数据。下面是我的代码,数据和当前输出。但是,函数getUniqueDates()必须遍历完整的df才能获得列表中的唯一日期,如下所示。有没有什么简单有效的方法来获取每天的数据,并将其传递给processDataForEachDate()函数。遍历大列表非常耗时,我在本例中对列进行了精简,以保持简单。

代码语言:javascript
复制
  data = {'date': ['2014-05-01 18:47:05.069722', '2014-05-01 18:47:05.119994', '2014-05-02 18:47:05.178768', '2014-05-02 18:47:05.230071', '2014-05-02 18:47:05.230071', '2014-05-02 18:47:05.280592', '2014-05-03 18:47:05.332662', '2014-05-03 18:47:05.385109', '2014-05-04 18:47:05.436523', '2014-05-04 18:47:05.486877'], 
            'noOfJobs': [34, 25, 26, 15, 15, 14, 26, 25, 62, 41]}
    df = pd.DataFrame(data, columns = ['date', 'noOfJobs'])
    df = df.astype(dtype= {"date":'datetime64[ns]'})
    print(df)

    #Ouput====================================
                            date  noOfJobs
    0 2014-05-01 18:47:05.069722        34
    1 2014-05-01 18:47:05.119994        25
    2 2014-05-02 18:47:05.178768        26
    3 2014-05-02 18:47:05.230071        15
    4 2014-05-02 18:47:05.230071        15
    5 2014-05-02 18:47:05.280592        14
    6 2014-05-03 18:47:05.332662        26
    7 2014-05-03 18:47:05.385109        25
    8 2014-05-04 18:47:05.436523        62
    9 2014-05-04 18:47:05.486877        41


    def getUniqueDates():
        todaysDate = datetime.datetime.today().strftime('%Y-%m-%d')
        listOfDates=[]
        for c,r in df.iterrows():
            if r.date.date() != todaysDate:        
                todaysDate=r.date.date()
                listOfDates.append(todaysDate)
        return listOfDates

    listOfDates = getUniqueDates()
    print(listOfDates)

   # Output====================================
    [datetime.date(2014, 5, 1),
     datetime.date(2014, 5, 2),
     datetime.date(2014, 5, 3),
     datetime.date(2014, 5, 4)]



 for eachDate in listOfDates:
            processDataForEachDate(eachDate)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-12 04:28:33

您可以使用以下命令访问唯一日期的NumPy数组:

代码语言:javascript
复制
>>> df.date.dt.date.unique()
array([datetime.date(2014, 5, 1), datetime.date(2014, 5, 2),
       datetime.date(2014, 5, 3), datetime.date(2014, 5, 4)], dtype=object)

dt是pandas系列df.date的一个访问器方法。基本上,它是一个类,充当一系列与日期和时间相关的方法的类似属性的接口。好处是它是矢量化的(参见here以获取与Pandas开发人员的.iterrows()的比较),访问器方法也使用“缓存属性”设计:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51293345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档