pandas: быстрое преобразование метки времени в неделю ISO - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть функция, которая возвращает значение индекса экземпляра панды Series, состоящего из массива pd.Timestamp значений в качестве значения недели ISO.

import numpy as np
import pandas as pd

timestamps = [pd.Timestamp('2014-01-01'), pd.Timestamp('2014-02-01'), pd.Timestamp('2014-02-01')]
quantities = [1.0, 1.0, 1.0]
series = pd.Series(quantities, index=timestamps)

def timestamps_iso() -> np.array:
    timestamps_iso = []
    for timestamp in series.index:
        timestamp_iso = timestamp.isocalendar()[1]
        if timestamp_iso == 53: # fix ISO week number 53.
            timestamp_iso = np.random.choice([52, 1])
        timestamps_iso.append(timestamp_iso)
    return np.array(timestamps_iso)

Можно ли сделать это быстрее или в стиле более панд, пожалуйста? Требуется много времени, чтобы индекс работал слишком долго.

Спасибо за любую помощь.

1 Ответ

1 голос
/ 02 апреля 2019

В вашем вопросе указано значение месяца, а в коде указано значение недели.Я полагаю, вы ищете значение недели.Вы можете получить доступ к номеру недели в серии datetime с помощью .week:

In [1]: timestamps = [pd.Timestamp('2014-01-01'), pd.Timestamp('2014-02-01'), pd.Timestamp('2014-02-01')] 
   ...: quantities = [1.0, 1.0, 1.0] 
   ...: series = pd.Series(quantities, index=timestamps)                                                                                                                                                                                             

In [2]: series.index.week                                                                                                                                                                                                                            
Out[2]: Int64Index([1, 5, 5], dtype='int64')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...