Pandas pd.infer_freq()函数无法获取14D频率

问题描述 投票:0回答:1

我需要

pd.infer_freq()
函数返回以天为单位测量的频率,因为这是我正在使用的库的依赖项。它不能返回
None
2W-SAT
,需要间隔一定天数。下面的代码不会产生所需的结果。

import pandas as pd
import numpy as np

# Generate fake data
date_rng = pd.date_range(start='2022-01-01', end='2022-12-31', freq='14D')
data = np.random.randn(len(date_rng), 2)
df = pd.DataFrame(data, columns=['Value1', 'Value2'], index=date_rng)

# Print the DataFrame
print(df)

# Declare the frequency is 14 day
df.index.freq = '14D'

# Infer the frequency
inferred_freq = pd.infer_freq(df.index)
print("Inferred Frequency:", inferred_freq)

这将返回

2W_SAT
。有没有办法强制 infer_freq 函数仅返回天数频率?

python pandas
1个回答
0
投票

infer_freq
是一个便利函数,旨在从未明确定义频率的 DatetimeIndex infer 频率。相关用例是:

date_rng = pd.date_range(start='2022-01-01', end='2022-12-31', periods=27) # <--- freq=None here
data = np.random.randn(len(date_rng), 2)
df = pd.DataFrame(data, columns=['Value1', 'Value2'], index=date_rng)
pd.infer_freq(df.index)  # 2W-SAT

但是,在您的用例中,由于索引已经具有定义的频率(freq='14D'),因此无需推断;按原样使用它:

date_rng = pd.date_range(start='2022-01-01', end='2022-12-31', freq='14D')
data = np.random.randn(len(date_rng), 2)
df = pd.DataFrame(data, columns=['Value1', 'Value2'], index=date_rng)
df.index.freq.freqstr    # '14D'
© www.soinside.com 2019 - 2024. All rights reserved.