在 pandas 数据框中满足条件的最小值

Minimum if condition is met in pandas dataframe

我有一个数据框;

Date     Price  Product
1/1/12   22       Pen
1/2/12   44      Paper
1/2/12   33      Paper
1/3/12   34      Paper

如果 Date 和 Product 重复,我只想得到最小值。

所以预期的输出是

Date     Price  Product
1/1/12   22       Pen
1/2/12   33      Paper
1/3/12   34      Paper

我很乐意将数据保留为平面文件格式或创建时间序列枢轴 table。

我目前能看到的唯一选择是按价格排序(从高到低),然后删除重复项并保留 'last'。但很想探索是否有更好的方法来做到这一点

df.sort_values('Price', ascending=False).groupby(['Date','Product'],sort=False).last()


                Price
Date    Product 
1/2/12  Paper   33
1/3/12  Paper   34
1/1/12  Pen     22

来自 cs95 的反馈是准确的。

您可以先按价格排序,然后按日期和产品删除重复项。

df.sort_values(by=['Price']).drop_duplicates(subset=['Date', 'Product'])


    Date    Price   Product
0   1/1/12  22      Pen
2   1/2/12  33      Paper
3   1/3/12  34      Paper