繁体   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