查找具有值和最新日期的行数

Find number of rows with values and latest date

我有这样的数据框:

pk_id date
123   2020-01-01
223   2020-01-02
123   2020-01-03
224   2020-01-04

我想找到 pk_id = 123pk_id = 223 以及它们的最新日期并计算这些行的数量。

我有以下代码

idx = plan_df.groupby('pk_id')['date'].idxmax()
df = df.loc[idx] 
df = df.loc[df['pk_id'] == 123] 

形成数据框

pk_id   date
123    2020-01-03
223    2020-01-02

现在我找到了行数

num = df.shape[0]

我相信可以一行完成。有什么想法吗?

你可以试试

out = df[df['pk_id'].isin([123, 223])].groupby('pk_id', as_index=False)['date'].max()
print(out)

   pk_id        date
0    123  2020-01-03
1    223  2020-01-02

可以使用pandas查询功能

df.query("pk_id == 123 | pk_id == 223").groupby('pk_id', as_index=False)['date']