[英]How to find x rows above and below a criteria match in pandas data-frame and then save them as a new df?
我目前有一個 pandas dataframe 使用 df.column.pct_change() 計算出 %change,我想過濾所有變化大於 30% 的行。 我已經可以做到這一點。 然后使用 output 我想取行上方的行,其百分比變化大於 30,然后取下面的 6 行,如果 %change 在數據的最后 6 行內,則以某種方式忽略,所以我沒有得到想要使用不存在的數據的錯誤。
日期......打開......關閉......百分比變化......
XXX……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………xxx的
XXX……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………xxx的
AAA........ xxx ...... xxx ...... xxx ......
BBB............ xxx............ 31%............ xxx......
CCC………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
DDD…………xxx………………………………………………………………………………………………………………………………………………………………………………………………………………………………
EEE…………xxx………………………………………………………………………………………………………………………………………………………………………………………………
FFF…………xxx………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
GGG…………xxx…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
HHH........ xxx............ xxx............ xxx......
如果那是我的表並且 BBB 行有 31% 的變化,我希望程序將行 AAA 一直保存到 HHH 作為新的 dataframe。
嘗試這個:
df_upper = df.loc[df.PERCENTCHANGE <= 30]
df_lower = df.loc[df.PERCENTCHANGE > 30]
df_required = pd.concat([df_upper.tail(1), df_lower])
謝謝,安舒爾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.