Python 3.x 获得每个月/年对的第一个条目

Python 3.x 获得每个月/年对的第一个条目,python-3.x,pandas,datetime,pandas-groupby,Python 3.x,Pandas,Datetime,Pandas Groupby,我希望获得每个月/年对的第一个条目。我正在考虑构建一个groupby方法,但考虑到优先顺序,我不确定该如何进行 Date Seconds 2020-05 2748.03 2020-05 2748.25 2020-05 2777.72 ... ... ... ... 1997-12 100.22 1997-12 66.66 1997-11 54.53 1997-11 92.11 1997-11

我希望获得每个月/年对的第一个条目。我正在考虑构建一个groupby方法,但考虑到优先顺序,我不确定该如何进行

     Date   Seconds
    2020-05 2748.03 
    2020-05 2748.25 
    2020-05 2777.72 
    ... ... ... ... 
    1997-12 100.22 
    1997-12  66.66
    1997-11  54.53
    1997-11  92.11
    1997-11  42.52
    1997-10 155.22  
    1997-10 115.03  

谢谢

我假设这是一个字符串列表,如下所示:

dates = [
    "2020-05 2748.03",
    ...
    "1997-10 115.03"
]
为了按年份分组,首先需要将日期拆分为年、月列和秒列,如下所示:

dates = [single_date.split(" ") for single_date in dates]
日期列表现在为:

[
    ["2020-05", "2748.03"],
    ...
    ["1997-10", "115.03"],
]
现在,您应该构建数据框架:

df = pd.DataFrame(dates, columns =['year_month', 'seconds'], dtype = float)
现在让我们按年、月分组,并在秒列中取最小值

first_entries_per_month_year = df.groupby("year_month").min()
希望有帮助

这是
groupby()。head

# change `date` to your year/month column name
df.groupby('date', sort=False).head(1)
删除重复项

df.drop_duplicates('date')
输出:

      date    Value
0  2020-05  2748.03
3  1997-10   112.67

别忘了向上投票,这样其他人会看到的。我意识到你实际上使用了“秒”列作为排序的代理,但该数据的最小值不一定对应于第一个条目。我更新了信息以反映这一点。我也还没有提升自己的声誉,但一旦我到了那里,我会这么做的!