[Python] Dataframe ValueError: The truth value of an array with more than one element is...

Discussão em 'Python' iniciado por Stack, Dezembro 1, 2024.

  1. Stack

    Stack Membro Participativo

    I have a dataframe (reportingDatesDf) which the head looks like this:

    reportingDatesDf.index unique_stock_id reporting_type
    date
    2015-01-28 BBG.MTAA.STM.S 2014:A
    2015-01-28 BBG.MTAA.STM.S 2014:S2
    2015-01-28 BBG.MTAA.STM.S 2014:Q4
    2014-10-29 BBG.MTAA.STM.S 2014:C3
    2014-10-29 BBG.MTAA.STM.S 2014:Q3


    I am trying to reduce the dataframe to include entries that are only between 2 dates with the following line:

    reportingDatesDf = reportingDatesDf[(reportingDatesDf.index >= startDate) and (reportingDatesDf.index <= endDate)]


    The dataframe is created from a CSV using the following code:

    def getReportingDatesData(rawStaticDataPath,startDate,endDate):
    pattern = 'ReportingDates'+ '.csv'
    staticPath = rawStaticDataPath

    with open(staticPath+pattern,'rt') as f:

    reportingDatesDf = pd.read_csv(f,
    header=None,
    usecols=[0,1,2],
    parse_dates=[1],
    dayfirst=True,
    index_col=[1],
    names=['unique_stock_id','date','reporting_type'])
    #print(reportingDatesDf.head())
    print('reportingDatesDf.index',reportingDatesDf)
    reportingDatesDf = reportingDatesDf[(reportingDatesDf.index >= startDate) and (reportingDatesDf.index <= endDate)]


    I however get the error:


    ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
    ​

    Why has this happened? I am using similar code elsewhere which works.

    Continue reading...

Compartilhe esta Página