我有一个具有以下详细信息的数据框:
对于每个q_id
,可能会有多个ph_id
和不同的ph_date
。
我想用它来制作一个新的数据框,这样,每个q_id
只有一个ph_id
,并且是最旧的(日期最少)。
我尝试了以下代码,但我认为它的计算速度很慢:
def oldest_ph(q_id):
return a.loc[a.ph_date == a[a['q_id'] == q_id].ph_date.min(), 'ph_date']
b['oldest_date'] = a['q_id'].apply(lambda x: a(x))
有什么更好的办法吗?
答案 0 :(得分:1)
首先,让我们尝试为每个ph_id
提取最早的q_id
,然后使用map:
s = df.sort_values('date').drop_duplicates('q_id').set_index('q_id')
df['ph_id'] = df['q_id'].map(s['ph_id'])