Python 3.x 获得每个月/年对的第一个条目
我希望获得每个月/年对的第一个条目。我正在考虑构建一个groupby方法,但考虑到优先顺序,我不确定该如何进行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
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
别忘了向上投票,这样其他人会看到的。我意识到你实际上使用了“秒”列作为排序的代理,但该数据的最小值不一定对应于第一个条目。我更新了信息以反映这一点。我也还没有提升自己的声誉,但一旦我到了那里,我会这么做的!