pandas:快速将时间戳索引转换为 ISO 周



>我有一个函数,它返回由pd.Timestamp值数组组成的熊猫Series实例的索引值作为 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)

请问这能做得更快,或者以更熊猫的风格完成吗?当索引很大时,运行需要很长时间。

感谢您的任何帮助。

您的问题说月值,但代码说周值。我假设您正在寻找周值。您可以使用.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')

最新更新