[英]How to extract data from data frame when value of column change
當值從 0 變為 1 時,我想提取數據框的一部分。
邏輯1:當值從0變為1時,開始保存數據,直到值再次變為0。(也指向1之前和1之后)
邏輯2:當數值從0變為1時,開始保存數據,直到數值再次變為0。(不需要保存1之前和1之后的點)
僅在標志的第一次值從 0 更改為 1 時保存數據,此后如果再次將值從 0 更改為 1 不需要做任何事情
df=pd.DataFrame({'value':[3,4,7,8,11,1,15,20,15,16,87],'flag':[0,0,0,1,1,1,0,0,1,1,0]})
Desired output:
df_out_1=pd.DataFrame({'value':[7,8,11,1,15]})
Desired output:
df_out_2=pd.DataFrame({'value':[8,11,1]})
想法是將1
和0
連續組s
連續組獲取到s
,僅過濾1
組並通過按最小值進行比較來獲得前1
組:
df = df.reset_index(drop=True)
s = df['flag'].ne(df['flag'].shift()).cumsum()
m = s.eq(s[df['flag'].eq(1)].min())
df2 = df.loc[m, ['value']]
print (df2)
value
3 8
4 11
5 1
然后使用 aff 過濾值並將1
刪除為默認RangeIndex
:
df1 = df.loc[(df2.index + 1).union(df2.index - 1), ['value']]
print (df1)
value
2 7
3 8
4 11
5 1
6 15
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.