gpt4 book ai didi

python - Pandas ,简单地将一个月添加到数据框中的日期时间列

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

作为能够计算两个日期时间之间的事件的后续问题,这里回答得很好:Create a Pandas dataframe with counts of items spanning a date range

剩下的问题是,最后一个月 ['END_DATE'] 在两个表相加和相减后最终显示为零,这在数学上是正确的,因为所有项目的结束日期都在当月或更早,但是在在这种情况下,因为他们在那个月至少有一部分是活跃的,所以在 END_DATE 上加一个月会更正确,这样他们就会在结束的月份显示为活跃(H2 是一个数据框)

代码是:

ends = H2['END_DATE'].apply(lambda t: t.to_period(freq='m')).value_counts()

我曾尝试使用 rollforward 和 DateOffset(month=1) 例如。对于日期偏移量:

ends = (H2['END_DATE'].DateOffset(months=1)).apply(lambda t: t.to_period(freq='m')).value_counts()

这给了我这个错误:

AttributeError: 'Series' object has no attribute 'DateOffset'

最佳答案

最简单的方法是在 PeriodIndex 中加一(月):

In [21]: ends
Out[21]:
2000-05 1
2000-09 1
2001-06 1
Freq: M, dtype: int64

In [22]: ends.index = ends.index + 1

In [23]: ends
Out[23]:
2000-06 1
2000-10 1
2001-07 1
Freq: M, dtype: int64

我最初的建议是在重新编制索引后进行转换(因为无论如何您都将要这样做):

In [11]: ends
Out[11]:
2000-05 1
2000-09 1
2001-06 1
Freq: M, dtype: int64

In [12]: p = pd.PeriodIndex(freq='m', start='2000-1', periods=19) # Note: needs to be one more than before

In [13]: sparse_ends = ends.reindex(p)

In [14]: sparse_ends.shift(1)
Out[14]:
2000-01 NaN
2000-02 NaN
2000-03 NaN
2000-04 NaN
2000-05 NaN
2000-06 1
2000-07 NaN
2000-08 NaN
2000-09 NaN
2000-10 1
2000-11 NaN
2000-12 NaN
2001-01 NaN
2001-02 NaN
2001-03 NaN
2001-04 NaN
2001-05 NaN
2001-06 NaN
2001-07 1
Freq: M, dtype: float64

关于python - Pandas ,简单地将一个月添加到数据框中的日期时间列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18935783/

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