我有以下DataFrame:
product_id shipping_date price quantity
AX-11 2014-11-02T01:00:04+00:00 200 1
BA-45 2012-05-23T01:00:02+00:00 4000 5
XF-55 2011-01-12T01:00:07+00:00 400 10
..................................................................
我正在尝试获取最先发货的产品,答案应为XF-55
,因为它是2011-01-12T01:00:07+00:00
中提供的。
我尝试了以下代码,但这似乎不起作用:
df2 = df.groupby('product_id')['shipping_date'].transform("min")
这只是给了我一个带product_id
的新DataFrame,它们根本没有排序。我如何获得第一个发货产品的product_id
?
答案 0 :(得分:1)
使用idxmin()
获取最早发货日期的行索引。然后,您可以使用loc
从产品ID列中获取该行的值:
>>> df.loc[df['shipping_date'].idxmin(), 'product_id']
'XF-55'
答案 1 :(得分:-1)
我会使用NumPy的argsort
:
sortidx = np.argsort(df['shipping_date'])
这为您提供了一组对数据进行排序的索引。因此返回数组中的第一个索引是最低shipping_date
的索引。然后:
df['product_id'][sortidx[0]]
应该给你想要的结果。