[英]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.