我有一个看起来像这样的熊猫数据框:
我想为每个不同的 ID 获取最大日期的行,以便我的最终结果如下所示:
我的日期列的数据类型为“对象”。我尝试过分组,然后尝试获取最大值,如下所示:
idx = df.groupby(['ID','Item'])['date'].transform(max) == df_Trans['date']
df_new = df[idx]
Run Code Online (Sandbox Code Playgroud)
但是我无法得到想要的结果。对这个问题的任何帮助将不胜感激!
idxmax
只要index
唯一或最大索引不重复就应该工作。
df.loc[df.groupby('ID').date.idxmax()]
Run Code Online (Sandbox Code Playgroud)
只要最大值是唯一的就应该工作。否则,您将获得等于最大值的所有行。
df[df.groupby('ID')['date'].transform('max') == df['date']]
Run Code Online (Sandbox Code Playgroud)
也是很好的解决方案。
df.sort_values(['ID', 'date']).drop_duplicates('date', keep='last')
Run Code Online (Sandbox Code Playgroud)