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

我有以下数据框dt:


           date  USDBRL

0    2000-01-03  1.8011

1    2000-01-04  1.8337

2    2000-01-05  1.8544

3    2000-01-06  1.8461

4    2000-01-07  1.8281

        ...     ...

5212 2020-10-01  5.6441

5213 2020-10-02  5.6464

5214 2020-10-05  5.6299

5215 2020-10-06  5.5205

5216 2020-10-07  5.6018

我如何操作它dt,或创建一个新的,仅包含每个月最后一天的行?


杨__羊羊
浏览 116回答 2
2回答

皈依舞

您可以使用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()]

芜湖不芜

您可以使用 创建日期范围列表pd.date_range。这是另一种方式required_datelist = pd.date_range(start='1/1/2018', periods=12, freq='M') output = dt[dt.date.isin(required_datelist)]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python