猿问

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

我有一个函数,它返回Series由一组值组成的 Pandas实例的索引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)

请问这可以做得更快,还是以更熊猫的风格完成?索引大的时候运行需要很多时间。


谢谢你的帮助。


小怪兽爱吃肉
浏览 217回答 1
1回答

MM们

你的问题说的是月值,但代码说的是周值。我假设您正在寻找周值。您可以使用以下命令访问日期时间系列的周数.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')
随时随地看视频慕课网APP

相关分类

Python
我要回答