我如何在熊猫中执行解释的操作?
这是我的 df
idx = pd.date_range('2020-01-01',periods=26,freq='D')
vals = [0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,1,1]
pd.DataFrame(vals,index=idx)
我需要知道的是值在哪些时期变为 1。所以这个特殊情况在接下来的时期变为 1(以及我想看到的输出)
2020-01-04:2020-01-07
2020-01-14:2020-01-18
2020-01-21:2020-01-21
2020-01-25:2020-01-26
谢谢
回答
我们可以group在index上的顺序块数据帧的1's和aggreagte使用first和last计算周期,其中值转/住宿1。
m = df[0].eq(1)
m[m].index.to_series().groupby((~m).cumsum()).agg(['first', 'last'])
first last
0
3 2020-01-04 2020-01-07
9 2020-01-14 2020-01-18
11 2020-01-21 2020-01-21
14 2020-01-25 2020-01-26