在aPython Dataframe中,如何根据每个唯一id的日期匹配第一个事件并捕获该特定事件?
在Python中,我有一个带有ID和许多事件日期和事件类型的数据帧。我想为每个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
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等。