如何调用具有日期格式参数的python函数?

时间:2019-08-23 11:56:11

标签: python-3.x

因此,我有下面的函数,问题是,当我调用该函数时,出现错误提示ValueError: could not convert string to Timestamp(不幸的是,pc不允许我复制完整的错误消息,因为pc在工作就是通过:()建立的,无论如何,这是我的代码:

def ao_year(start, end):
    ##This fucntion selects all columns and rows, between two selected 
    ##dates from 'event_start_date_time' column
    return ao_paths_2009.loc[(ao_paths_2009['event_start_date_time'] >= 
         '{}') & (ao_paths_2009['event_start_date_time'] <= '{}')]

#Calling the function
ao_year_2009 = ao_year('2009-01-01', '2009-12-31')
print(ao_year_2009.info())

我已经尝试过.strftime('%d/%m%)Y',但没有成功。

1 个答案:

答案 0 :(得分:0)

# option 1: using strongly typed argument
from datetime import date
import pandas as pd


def ao_year(start: date, end: date):
    return ao_paths_2009.loc[
        (ao_paths_2009['event_start_date_time'] >= start) & (ao_paths_2009['event_start_date_time'] <= end)]


try:
    _list = {'event_start_date_time': ['2009-01-01 12:44:33 PM',
                                       '2009-01-02 12:44:33 PM',
                                       '2009-01-03 12:44:33 PM',
                                       '2009-01-04 12:44:33 PM',
                                       '2009-01-05 12:44:33 PM',
                                       '2009-01-06 12:44:33 PM',
                                       '2009-01-07 12:44:33 PM',
                                       '2009-01-08 12:44:33 PM',
                                       '2009-01-09 12:44:33 PM',
                                       '2009-01-10 12:44:33 PM',
                                       '2009-01-11 12:44:33 PM',
                                       '2009-01-12 12:44:33 PM',
                                       '2009-01-13 12:44:33 PM',
                                       '2009-01-14 12:44:33 PM',
                                       '2009-02-15 12:44:33 PM',
                                       '2009-02-16 12:44:33 PM']}
    ao_paths_2009 = pd.DataFrame(data=_list)
    ao_year_2009 = ao_year('2009-01-01', '2009-12-31')
    # print(ao_year_2009.info())
    with pd.option_context('display.max_rows', None, 'display.max_columns', None):  # more options can be specified also
        print(ao_year_2009)
except Exception as e:
    print(e)

# option 2: pass function param as string convert to datetime
import pandas as pd


def ao_year(start, end):
    start = pd.to_datetime(start).date()
    end = pd.to_datetime(end).date()
    return ao_paths_2009.loc[
        (ao_paths_2009['event_start_date_time'] >= start) & (ao_paths_2009['event_start_date_time'] <= end)]


try:
    _list = {'event_start_date_time': ['2009-01-01 12:44:33 PM',
                                       '2009-01-02 12:44:33 PM',
                                       '2009-01-03 12:44:33 PM',
                                       '2009-01-04 12:44:33 PM',
                                       '2009-01-05 12:44:33 PM',
                                       '2009-01-06 12:44:33 PM',
                                       '2009-01-07 12:44:33 PM',
                                       '2009-01-08 12:44:33 PM',
                                       '2009-01-09 12:44:33 PM',
                                       '2009-01-10 12:44:33 PM',
                                       '2009-01-11 12:44:33 PM',
                                       '2009-01-12 12:44:33 PM',
                                       '2009-01-13 12:44:33 PM',
                                       '2009-01-14 12:44:33 PM',
                                       '2009-02-15 12:44:33 PM',
                                       '2009-02-16 12:44:33 PM']}
    ao_paths_2009 = pd.DataFrame(data=_list)
    ao_paths_2009['event_start_date_time'] = pd.to_datetime(ao_paths_2009['event_start_date_time'])
    ao_year_2009 = ao_year('2009-01-01', '2009-12-31')
    with pd.option_context('display.max_rows', None, 'display.max_columns', None):  # more options can be specified also
        print(ao_year_2009)

except Exception as e:
    print(e)