【发布时间】:2021-05-11 07:42:30
【问题描述】:
我有一个函数fn_weekly,如果星期发生变化(星期一),它会产生我想要的1。 df 是任何带有索引时间戳的数据帧。
我正在尝试创建一个输出相同格式的 fn_monthly,但我得到的是 floats 而不是 ints。
我做错了什么?
另外,如果有更简洁的方法来实现fn_monthly,请告诉我。谢谢!
import pandas as pd
fn_weekly = lambda df: pd.DataFrame(df.index.isocalendar().week).diff()
fn_monthly = lambda df: pd.DataFrame(pd.Series(df.index.month, index=df.index)).diff()
>>> fn_weekly(df)
week
Date
2019-02-04 <NA>
2019-02-05 0
2019-02-06 0
2019-02-07 0
2019-02-08 0
... ...
2021-02-01 1
2021-02-02 0
2021-02-03 0
2021-02-04 0
2021-02-05 0
>>> fn_monthly(df)
Date
Date
2019-02-04 NaN
2019-02-05 0.0
2019-02-06 0.0
2019-02-07 0.0
2019-02-08 0.0
... ...
2021-02-01 1.0
2021-02-02 0.0
2021-02-03 0.0
2021-02-04 0.0
2021-02-05 0.0
【问题讨论】:
标签: python pandas dataframe time-series timestamp