我有以下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")这只是给了我一个新的DataFrame与product_id,他们根本没有排序。我怎样才能得到第一批出厂产品的product_id?
发布于 2015-11-28 14:43:25
使用idxmin()获取最早传送日期的行索引。然后可以使用loc从产品ID列中获取该行的值:
>>> df.loc[df['shipping_date'].idxmin(), 'product_id']
'XF-55'发布于 2015-11-28 14:28:36
我会使用NumPy的argsort来实现这个目标:
sortidx = np.argsort(df['shipping_date'])这为您提供了一个索引数组,用于对数据进行排序。因此,返回数组中的第一个索引是最低shipping_date的索引。然后:
df['product_id'][sortidx[0]]应该给你你想要的结果。
https://stackoverflow.com/questions/33972315
复制相似问题