每天使用Python/Datafram的唯一数据

2024-09-30 18:20:45 发布

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

我试着用熊猫来处理每天的数据。下面是我的代码,数据和电流输出。但是,函数getUniqueDates()必须遍历full df才能获得列表中的唯一日期,如下所示。有没有简单有效的方法来获取每天的数据,这些数据可以传递给函数processDataForEachDate()。遍历大列表是很费时的,为了保持简单,我在本例中已剥离了列。你知道吗

  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)

Tags: 数据函数indf列表fordatadatetime
1条回答
网友
1楼 · 发布于 2024-09-30 18:20:45

您可以通过以下方式访问唯一日期的NumPy数组:

>>> 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是熊猫系列df.date访问器方法。基本上,它是一个类,充当一组日期时间相关方法的属性接口。好处是它是矢量化的(请参见here与Pandas开发人员的.iterrows()进行比较),并且访问器方法也使用“缓存属性”设计:

相关问题 更多 >