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