Как я могу дать значение индекса для конкретной даты в Python? - PullRequest
0 голосов
/ 07 октября 2018

Я хочу назначить индикацию датам в python относительно фиксированной даты.Например, индекс от 1 до 20130101, индекс от 2 до 20130102 и т. Д. До 20181231. Эти даты находятся в кадре данных Python.Индексы могут быть перезаписаны на даты в кадре данных.Может кто-нибудь подсказать, пожалуйста, как это сделать?

Ответы [ 3 ]

0 голосов
/ 07 октября 2018

Вы можете использовать pandas.date_range в понимании слова, чтобы создать pandas.Series объект с нужным вам индексом и значением:

start_date = '20130101'
end_date = '20181231'

date_idx = pd.Series({d:i+1 for i, d in enumerate(pd.date_range(start_date, end_date, freq='D'))})

, который выглядит как:

2013-01-01       1
2013-01-02       2
2013-01-03       3
2013-01-04       4
2013-01-05       5
2013-01-06       6
...
2018-12-26    2186
2018-12-27    2187
2018-12-28    2188
2018-12-29    2189
2018-12-30    2190
2018-12-31    2191

Затем вы можете сопоставить это с любым столбцом datetime в pandas.DataFrame, используя Series.map.Например:

df['date_idx'] = df['date_column'].map(date_idx)
0 голосов
/ 07 октября 2018

Здесь не требуется явного цикла.Вы можете использовать pd.Series.dt.days:

df = pd.DataFrame({'dates': pd.date_range('2013-01-01', '2018-12-31', freq='D')})

df['index'] = (df['dates'] - df['dates'].iat[0]).dt.days + 1

print(df)

          dates  index
0    2013-01-01      1
1    2013-01-02      2
2    2013-01-03      3
3    2013-01-04      4
4    2013-01-05      5
...         ...    ...
2186 2018-12-27   2187
2187 2018-12-28   2188
2188 2018-12-29   2189
2189 2018-12-30   2190
2190 2018-12-31   2191
0 голосов
/ 07 октября 2018

Вы можете вычесть date объектов.Это дает временную дельту, которая легко конвертируется в количество дней.Из вашего объяснения это звучит в точности как то, что вы ищете:

>>> (datetime.date(2013, 1, 2)-datetime.date(2013, 1, 1)).days
1
>>> (datetime.date(2013, 1, 31)-datetime.date(2013, 1, 1)).days
30

Здесь аргумент с правой стороны - это фиксированная дата, к которой вы привязываетесь.

...