为了账号安全,请及时绑定邮箱和手机立即绑定

操作/复制数据框(pandas)并仅维护每个月的最后一天

操作/复制数据框(pandas)并仅维护每个月的最后一天

杨__羊羊 2023-10-18 15:31:47
我有以下数据框dt:           date  USDBRL0    2000-01-03  1.80111    2000-01-04  1.83372    2000-01-05  1.85443    2000-01-06  1.84614    2000-01-07  1.8281        ...     ...5212 2020-10-01  5.64415213 2020-10-02  5.64645214 2020-10-05  5.62995215 2020-10-06  5.52055216 2020-10-07  5.6018我如何操作它dt,或创建一个新的,仅包含每个月最后一天的行?
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

您可以使用dt.to_periods('M')查找月份,然后duplicated查找它们重复的位置,然后使用布尔索引:

months = pd.to_datetime(dt['date']).dt.to_period('M')

out = dt.loc[months.duplicated(keep='last')]

另一种方法是groupby().idxmax()。如果您的数据未按以下方式排序,这会慢一些但更安全date

out = df.loc[df.groupby(months)['date'].idxmax()]


查看完整回答
反对 回复 2023-10-18
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

您可以使用 创建日期范围列表pd.date_range。这是另一种方式

required_datelist = pd.date_range(start='1/1/2018', periods=12, freq='M')
output = dt[dt.date.isin(required_datelist)]


查看完整回答
反对 回复 2023-10-18
  • 2 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信