首页 > 解决方案 > 按月查找每个组中最早的记录

问题描述

我有一个像这样的熊猫数据框:

Month  Name  Revenue   EARLY_MIN
Jan     A     100        ?
Jan     A      50        ?
Feb     A      30        ?

对于每个“名称”,我想选择最早的记录(Jan)。如果它返回多于一行,我将选择带有 min 的记录。收入。所以在这种情况下是50。我将为这条记录创建一个 EARLY_MIN=1 列。所以在这个例子中,第二行EARLY_MIN=1,其他行EARLY_MIN=0。

我怎样才能在熊猫中做到这一点?步数?

标签: pythonpandasgroup-bypandas-groupby

解决方案


通过使用与 Vaishali 相同的设置

#df['Month'] = pd.to_datetime(df.Month, format='%b').dt.month

df['EARLY_MIN']=(~df.sort_values(['Month','Revenue']).duplicated('Name',keep='first')).astype(int)
df
Out[1006]: 
   Month Name  Revenue  EARLY_MIN
0      1    A      100          0
1      1    A       50          1
2      2    A       30          0

推荐阅读