Изменить дату с 0-100 на дд-мм-гг - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть столбец дат от 0 до 100, где значения могут повторяться несколько раз, но 0 на самом деле 1 августа 2018 года, как я могу решить это так, что 0 = дд-мм-гг (01-08 -2018), а в остальном этот ордер остается последним (09-09-2018)

Пример:

ID Sale Date
1 .  4     0
2 .  2     0
3 .  10    1
4 .  1     1
5 .  30    100  

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Создайте базовую дату и используйте timedelta для увеличения количества дней на основе значения, которое у вас есть в столбце Date:

from datetime import datetime, timedelta
​
def update_date(row):
    return row.parsed_date + timedelta(days=row.Date)
​
df = pd.DataFrame({
    'ID': [1 , 2 , 3 , 4 , 5],
    'Sale': [4 , 2 , 10, 1 , 30],
    'Date': [0, 0, 1, 1, 100],
})
​
df['parsed_date'] = datetime(2018, 8, 1, 0, 0)
df['parsed_date'] = df.apply(update_date, axis=1)

В результате:

      ID    Sale    Date    parsed_date
0      1    4      0        2018-08-01
1      2    2      0        2018-08-01
2      3    10     1        2018-08-02
3      4    1      1        2018-08-02
4      5    30     100      2018-11-09
0 голосов
/ 15 апреля 2019

Используйте 1 августа 2018 года как «базу» и добавьте к ней timedelta.Как демонстрация:

from datetime import datetime, timedelta

base = datetime(2018, 8, 1)

for d in range(101):
    date = base + timedelta(days=d)
    print(d, date.strftime('%d-%m-%Y'))
...