ValueError при использовании pandas date_range в цикле for - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть оригинальный набор данных с проектами, содержащими данные о его дате начала, дате окончания, общей стоимости.Я вычисляю значение дня (dagwaarde) путем деления общего значения на количество дней.

Я хочу заполнить набор данных данными с 1-1-2018 по 1-1-2020 суммой значений всех дней всех проектов за каждый день.

Все это работает, кроме этой части:

df_date_range = pd.date_range(begin,einde)

, которая выдает эту ошибку: ValueError: NaTType не поддерживает время

Этокод, который я использую:

#Original DF with data about projects: startdatum (start), einddatum (end), dagwaarde (day value). 
#Day value is total value ('Value') / amount of days

Pipedrive['einddatum'] = pd.to_datetime(Pipedrive['einddatum'])
Pipedrive['startdatum'] = pd.to_datetime(Pipedrive['startdatum'])

Pipedrive['Days'] = Pipedrive['einddatum'].sub(Pipedrive['startdatum'], axis =0)
Pipedrive.head()
Pipedrive['Days'] = Pipedrive['Days'] / np.timedelta64(1, 'D')
Pipedrive['dagwaarde'] = Pipedrive['Value'] / Pipedrive['Days']

#Create DF to work with 
Pipedrive_IN = Pipedrive[["stage_order_nr","dagwaarde",'einddatum', 'startdatum', 'Days' ]]

#make a list of all begin and end dates you want to have filled 
begin = '2018-01-01'  # start date
einde = '2020-01-01'  # end date

#make a DF with a timedate index 
datetimeindex = pd.date_range(begin,einde)
df_dates = pd.DataFrame(datetimeindex, columns=['date'])
df_dates = df_dates.set_index('date')
df_dates = df_dates.fillna(0)

for index, value in Pipedrive_IN.iterrows():
    begin = value.startdatum  # start date
    einde = value.einddatum  # end date
    dagwaarde = value.dagwaarde # dagwaarde

    #make DF with timedate index 
    df_date_range = pd.date_range(begin,einde)
    df_proj = pd.DataFrame(df_date_range, columns=['date'])
    df_proj['dagwaarde'] = dagwaarde
    df_proj = df_proj.set_index('date')
    df_proj=df_proj.dropna()
    print(df_proj.head())

    #add original DF to df_dates
    df_dates = df_dates.join(df_proj,lsuffix='', rsuffix=index)
    df_dates = df_dates.fillna(0)
    print(df_dates.head(20))

#print result
df_dates['total']=df_dates.sum(axis=1)
print(df_dates.head(50))
...