关于Panda / Python中最后一次出现的复杂数据帧过滤请求[编辑]

时间:2017-10-20 11:09:45

标签: python pandas dataframe

我很难进行复杂的数据帧过滤。

问题在于:

对于具有相同值的每个列'id',列'job'可以取值'fireman','nan','policeman'。

我想过滤我的数据框,以便为每个具有相同值的ID

我只保留从上次连续出现作业值'fireman'开始的行。我首先必须按“作业”值进行分组才能过滤:

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

我不知道哪个函数f是合适的。

有什么想法吗?

尝试:

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'])

1 个答案:

答案 0 :(得分:0)

这是一个不需要额外变量的版本:

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)