我有這樣的 DataFrame:
performance
year month week
2015 1 2 4.170358
3 3.423766
4 -1.835888
5 8.157457
2 6 -3.276887
... ...
2018 7 30 -1.045241
31 -0.870845
8 31 0.950555
32 6.757876
33 -2.203334
我想有一個范圍(0 或 1,n)的周,其中 n = 當前年份和月份的周數。
好吧,我認為最簡單的方法是使用
df.reset_index(level=2, drop=True)
但后來我意識到這是錯誤的,在最好的情況下我會得到
performance
year month week
2015 1 0 4.170358
1 3.423766
2 -1.835888
3 8.157457
2 4 -3.276887
... ...
2018 7 n-4 -1.045241
n-3 -0.870845
8 n-2 0.950555
n-1 6.757876
n -2.203334
但是在我這樣做之后,我得到了一個意想不到的行為
close
timestamp timestamp
2015 1 4.170358
1 3.423766
1 -1.835888
1 8.157457
2 -3.276887
... ...
2018 7 -1.045241
7 -0.870845
8 0.950555
8 6.757876
8 -2.203334
我失去了整個二級索引!為什么?我以為每個“集群”都是 0 到 n(是的,這是錯誤的,我上面提到的我意識到了這一點)......我解決了我的問題
df.groupby(level = [0, 1]).apply(lambda x: x.reset_index(drop=True))
并得到了我想要的 DataFrame 形式:
performance
year month
2015 1 0 4.170358
1 3.423766
2 -1.835888
3 8.157457
2 0 -3.276887
... ...
2018 7 3 -1.045241
4 -0.870845
8 0 0.950555
1 6.757876
2 -2.203334
但為什么?為什么某些級別的 reset_index 只是洗掉它?這是主要問題!
uj5u.com熱心網友回復:
reset_indexwith僅在您重置整個索引時drop=True添加默認索引。如果您只是重置多級索引的單個級別,它只會將其洗掉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/395564.html
上一篇:查找另一個區間內的所有非重疊區間
