我有以下数据框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()]
芜湖不芜
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)]
添加回答
举报
0/150
提交
取消