Pandas groupby然后选择一行

use*_*188 2 python pandas

我hava pandas数据框,我必须按一些列分组.组中的大多数组只有一行,但有几行有多行.对于其中的每一个,我只想保留最早的日期.我都试过了aggfilter功能,但他们似乎并没有做什么,我需要.

def first(df):
        if len(df) > 1:
            return df.ix[df['date'].idxmin()]
        else:
            return df

df.groupby(['id', 'period', 'type').agg(first)
Run Code Online (Sandbox Code Playgroud)

Ted*_*rou 9

按日期排序,然后抓住第一行.

df.sort_values('date').groupby(['id', 'period', 'type']).first()
Run Code Online (Sandbox Code Playgroud)