簡體   English   中英

在Panda / Python中最后一次出現值時執行復雜的數據框過濾請求[編輯]

[英]complex dataframe filtering request on the last occurence of a value in Panda/Python [EDIT]

我很難進行復雜的數據框過濾。

這里的問題:

對於具有相同值的每個列“ id”,列“ job”可以采用值“ fireman”,“ nan”,“ policeman”。

我想過濾我的數據框,以便對於每個具有相同值的ID,

我只保留行的開始位置,其中作業的值“消防員”在最近的連續時間出現。 我首先必須按“工作”值分組以進行過濾:

 df.groupby("job").filter(lambda x: f(x))

我不知道哪個功能合適。

有任何想法嗎 ?

嘗試:

df = pd.DataFrame([[79,1,], [79,2,'fireman'],[79,3,'fireman'],[79,4,],[79,5,],[79,6,'fireman'],[79,7,'fireman'],[79,8,'policeman']], columns=['id','day','job'])


output = pd.DataFrame([[79,6,'fireman'],[79,7,'fireman'],[79,8,'policeman']], columns=['id','day','job'])

這是不需要額外變量的版本:

df.groupby('imo').apply(lambda grp: grp[grp.index >= 
                                        ((grp.polygon.shift() != grp.polygon) & 
                                         (grp.polygon.shift(-1) == grp.polygon) & 
                                         (grp.polygon == 'FE')
                                        ).cumsum().idxmax()]
                       ).reset_index(level=0, drop=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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