我有以下數(shù)據(jù)框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,或創(chuàng)建一個(gè)新的,僅包含每個(gè)月最后一天的行?
2 回答

皈依舞
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用dt.to_periods('M')
查找月份,然后duplicated
查找它們重復(fù)的位置,然后使用布爾索引:
months = pd.to_datetime(dt['date']).dt.to_period('M') out = dt.loc[months.duplicated(keep='last')]
另一種方法是groupby().idxmax()
。如果您的數(shù)據(jù)未按以下方式排序,這會(huì)慢一些但更安全date
:
out = df.loc[df.groupby(months)['date'].idxmax()]

蕪湖不蕪
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用 創(chuàng)建日期范圍列表pd.date_range
。這是另一種方式
required_datelist = pd.date_range(start='1/1/2018', periods=12, freq='M') output = dt[dt.date.isin(required_datelist)]
添加回答
舉報(bào)
0/150
提交
取消