Как перебрать даты в кадре данных? - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть фрейм данных, в котором есть столбец дат, который отформатирован так:

"01.01.2016"

Я хотел бы создать цикл for, которыйначинается с этой даты и переходит к «1/2/2016», «1/3/2016» и т. д.

Я начинаю с этого кода Python:

df = pd.read_csv('myfile.csv')
df['dates'] = pd.to_datetime(df['dates'])

, которыйпреобразует формат даты в следующий: '01 -01-2016 'Далее:

start_date = '01-01-2016'

Наконец, цикл for:

for j in range (1,30)
    start_date + j...

Но вы не можете добавить целое число кэтот формат даты, конечно.Что я должен сделать в цикле for, чтобы просто перейти на следующий день?

Ответы [ 4 ]

0 голосов
/ 11 сентября 2018

Чтобы увеличить дату на один день, если вы любитель панд:

df['dates'].iloc[0] +pd.to_timedelta(1,'d')

Или вы можете попробовать это:

from datetime import timedelta
df['dates'].iloc[0] + timedelta(days=1)  #on the left side is the date you want to increase

Вы можете найти больше информации здесь https://stackoverflow.com/a/6871054/8433650

0 голосов
/ 11 сентября 2018

Используя цифровую дельту времени, вы можете добавить день или вычесть отметку времени

import numpy as np
import pandas as pd
pd.to_datetime('01-01-2016') +np.timedelta64(1,'D')
0 голосов
/ 11 сентября 2018

Вы можете добавить день с timedelta()

Import datetime

for j in range (1,30):
    start_date + datetime.timedelta(days=1)

Вот ССЫЛКА на документы для справки

0 голосов
/ 11 сентября 2018

Я не уверен, каким будет ваш конечный результат, но вы можете использовать pd.date_range:

start_date = pd.to_datetime('01-01-2016')

for j in pd.date_range(start_date, periods=30):
    print(j)

Что дает вам:

2016-01-01 00:00:00
2016-01-02 00:00:00
2016-01-03 00:00:00
2016-01-04 00:00:00
2016-01-05 00:00:00
2016-01-06 00:00:00
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...