gpt4 book ai didi

python - 写入 HDFStore 时能否保留 Pandas tseries DatetimeIndex 的频率?

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:20 27 4
gpt4 key购买 nike

我有一个 Pandas DataFrame,其中索引是(注意频率:H)-

<class 'pandas.tseries.index.DatetimeIndex'>
[2011-01-01 00:00:00, ..., 2013-12-31 23:00:00]
Length: 26304, Freq: H, Timezone: None

有多列,但前几行(以及分散在各处的其他行)包含所有 NA 条目。如果我将其写入 HDF 文件:

hdfstore.put('/table', df, format='table', data_columns=True, append=False)

然后读回:

df = hdfstore['/table']

看看索引,我发现:

<class 'pandas.tseries.index.DatetimeIndex'>
[2011-01-11 04:00:00, ..., 2013-12-31 23:00:00]
Length: 24656, Freq: None, Timezone: None

请注意,Freq 现在为 None,而且行数减少了,开始日期时间也较晚。第一行现在是原始 DataFrame 的第一行,其中至少包含一个非 NA 列值。

首先,这种预期行为是由于 HDF5 格式的限制以及 DataFrame 的存储方式造成的,还是一个错误?

有没有一种干净的方法可以避免这种情况发生,或者我只需要在加载后“修复”索引。也不确定最好的方法是什么。

最佳答案

这是 0.13.1 中引入的一个选项(可能是 0.13.0),您可以在 put/append 上设置 dropna=False 以避免删除全 NaN 行。这样做是为了提高效率,因为大多数时候在存储面板时,您有很多全 NaN 行,但没有理由存储它们。

否则频率信息将被保留。请注意,如果您追加,则多次追加后频率信息将不会被保留。

如果您需要重新推断频率(如果可能),您可以随时使用pd.infer_freq(an_index)。通常,如果需要,这在任何情况下都会自动完成。

关于python - 写入 HDFStore 时能否保留 Pandas tseries DatetimeIndex 的频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23522023/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com