簡體   English   中英

列值更改時如何從數據框中提取數據

[英]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]})

想法是將10連續組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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM