在aPython Dataframe中,如何根据每个唯一id的日期匹配第一个事件并捕获该特定事件?

在aPython Dataframe中,如何根据每个唯一id的日期匹配第一个事件并捕获该特定事件?,python,dataframe,datetime,time-series,data-manipulation,Python,Dataframe,Datetime,Time Series,Data Manipulation,在Python中,我有一个带有ID和许多事件日期和事件类型的数据帧。我想为每个id找到第一个事件,并创建一个新列,说明该日期,另一个为其第一类事件创建另一列 event_id date typeofevent e0 2015-07-20 1 e0 2015-07-25 4 e1 2015-06-02 2 e1 2015-07-18 1 e1 2015-07-20 3 e

在Python中,我有一个带有ID和许多事件日期和事件类型的数据帧。我想为每个id找到第一个事件,并创建一个新列,说明该日期,另一个为其第一类事件创建另一列

  event_id  date    typeofevent
        e0 2015-07-20   1
        e0 2015-07-25   4
        e1 2015-06-02   2
        e1 2015-07-18   1
        e1 2015-07-20   3
        e2 2015-04-25   2
        e2 2015-07-28   2
        e2 2015-06-20   3
        e2 2015-05-25   4

df['first_event']=df.groupby(['event_id'])['date'].first()

由于这些日期遵循模式
YYYY-MM-DD
,在
groupby()
中使用一个简单的
min()
。它将采用每个
事件的最短日期\u id
。然后您可以
merge()

输入:

将熊猫作为pd导入
df=pd.DataFrame({
'事件id':['e0','e0','e1','e1','e1','e2','e2','e2','e2'],
“日期”:[
'2015-07-20', '2015-07-25', '2015-06-02', '2015-07-18', '2015-07-20',
'2015-04-25', '2015-07-28', '2015-06-20', '2015-05-25'
],
“typeof事件”:[1,4,2,1,3,2,2,3,4]})
temp_df=df.groupby('event_id').agg({'date':'min'}).reset_index()
df=df.merge(temp\u df,on='event\u id')
rename(列={'date_x':'date','date_y':'first'},inplace=True)
输出:

  event_id        date  typeofevent       first
0       e0  2015-07-20            1  2015-07-20
1       e0  2015-07-25            4  2015-07-20
2       e1  2015-06-02            2  2015-06-02
3       e1  2015-07-18            1  2015-06-02
4       e1  2015-07-20            3  2015-06-02
5       e2  2015-04-25            2  2015-04-25
6       e2  2015-07-28            2  2015-04-25
7       e2  2015-06-20            3  2015-04-25
8       e2  2015-05-25            4  2015-04-25

我将如何为当天发生的事件添加一个新的专栏。示例df['first_event']是类型1、2或3等。