获取具有与每个ID关联的最小日期的行



我有一个带有多个ID的pandas数据帧,而对于其他列,我只有一个日期列,比如:"date1"。我想获得与所有ID相关联的具有最小日期的所有行。其他列值也应保留。

我所拥有的:

ID   date1        value
1    1/1/2013     a
1    4/1/2013     a
1    8/3/2014     b
2    11/4/2013    a
2    19/5/2016    b
2    8/4/2017     b

我想要的输出:

ID   date1      value
1    1/1/2013   a
2    11/4/2013  a

谢谢

转换为日期时间:

df = df.assign(date1 = pd.to_datetime(df.date1))

获取最小值和子集的标签索引:

df.loc[df.groupby("ID").date1.idxmin()]
ID      date1 value
0   1 2013-01-01     a
3   2 2013-11-04     a

假设您在ID中有ID,在DATE:中有日期

df.groupby('ID')['DATE'].min()

按您的ID分组,然后在每组中选择最小值。返回一个序列。如果您想要一个数据帧,那么在输出上调用_.reset_index()

如果您只想选择最小的行,我会将输出设置为键,然后设置为new_df.join(old_df.set_index(['ID', 'DATE']),而不是处理一些基于索引的恶作剧。

相关内容

  • 没有找到相关文章

最新更新