Вычесть дату из столбцов даты и времени - PullRequest
1 голос
/ 03 октября 2019

У меня есть фрейм данных, где один из столбцов ('ProcessingDATE') - это формат даты и времени. Я хочу создать еще один столбец («Дата отчета»), в котором, если дата обработки - понедельник, вычтите из него 3 дня, которые станут пятницей;остальное вычти из него 1 день.

Я использовал Python в течение короткого времени, поэтому не имею большого представления о том, как его написать. Я думал написать цикл for, если cell = Monday, then = datetime.datetime.today() – datetime.timedelta(days=3);else = datetime.datetime.today() – datetime.timedelta(days=1)

for j in range(len(DDA_compamy['ProcessingDATE'])):
    if pd.to_datetime(datetime(DDA_company.ProcessingDATE[j])).weekday() == 2

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Использование pandas.Series.dt.weekday и некоторая логика:

import pandas as pd
df = pd.DataFrame({'ProcessingDATE':pd.date_range('2019-04-01', '2019-04-27')})
df1 = df.copy()
mask = df1['ProcessingDATE'].dt.weekday == 0
df.loc[mask, 'ProcessingDATE'] = df1['ProcessingDATE'] - pd.to_timedelta('3 days')
df.loc[~mask, 'ProcessingDATE'] = df1['ProcessingDATE'] - pd.to_timedelta('1 days')

Вывод:

   ProcessingDATE
0      2019-03-29
1      2019-04-01
2      2019-04-02
3      2019-04-03
4      2019-04-04
5      2019-04-05
6      2019-04-06
7      2019-04-05
8      2019-04-08
9      2019-04-09
10     2019-04-10
11     2019-04-11
12     2019-04-12
13     2019-04-13
14     2019-04-12
15     2019-04-15
16     2019-04-16
17     2019-04-17
18     2019-04-18
19     2019-04-19
20     2019-04-20
21     2019-04-19
22     2019-04-22
23     2019-04-23
24     2019-04-24
25     2019-04-25
26     2019-04-26
0 голосов
/ 03 октября 2019

Надеюсь, это поможет,

from datetime import timedelta

if DDA_compamy['ProcessingDATE'].weekday() == 4:  #Condition to check if it is friday
    DDA_compamy['Report Date']=DDA_compamy['ProcessingDATE'] - timedelta(days=3) # if friday subtracting 3 days
else:
    DDA_compamy['Report Date']=DDA_compamy['ProcessingDATE'] - timedelta(days=1) #Else one day from the date is subtracted

выше также можно записать как,

DDA_compamy['Report Date'] = (DDA_compamy['ProcessingDATE'] - timedelta(days=3)) if (DDA_compamy['ProcessingDATE'].weekday() == 4) else (DDA_compamy['Report Date']=DDA_compamy['ProcessingDATE'] - timedelta(days=1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...