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

Python pandas 从 pandas 数据帧索引中删除每天的第一分钟

Python pandas 从 pandas 数据帧索引中删除每天的第一分钟

慕桂英546537 2023-08-22 15:12:50
我的 Contract_df 数据框结构如下:df = pd.DataFrame({'quote_ts': ['2020-05-15 14:01:00.522517',                                 '2020-05-15 14:01:00.599999',                                 '2020-05-15 15:00:01.234517',                                '2020-05-16 14:00:00.312518',                                '2020-05-16 14:01:00.582517',                                '2020-05-17 14:00:00.122983',                                '2020-05-17 14:02:00.524567',                                '2020-05-18 14:00:00.522517'],                   'price': [1000, 1200, 1300, 1000, 1400, 1800, 1900, 1600]})df = df.set_index('quote_ts')我需要删除每天的第一分钟,以便生成的数据框等于:df = pd.DataFrame({'quote_ts': ['2020-05-15 15:00:01.234517',                                '2020-05-16 14:01:00.582517',                                '2020-05-17 14:02:00.524567'],                   'price': [1300, 1400, 1600]})df = df.set_index('quote_ts')在不同的日子里,第一分钟并不总是相同的。
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

让我们尝试isin一下groupby head


df.index=pd.to_datetime(df.index)

toremove = df.groupby(df.index.date).head(1).index.strftime('%Y-%m-%d %H:%M')

df = df[~df.index.strftime('%Y-%m-%d %H:%M').isin(toremove)]

df

                            price

quote_ts                         

2020-05-15 15:00:01.234517   1300

2020-05-16 14:01:00.582517   1400

2020-05-17 14:02:00.524567   1900


查看完整回答
反对 回复 2023-08-22
?
慕容708150

TA贡献1831条经验 获得超4个赞

用于groupby.rank创建布尔掩码


s = pd.to_datetime(df.index)

m = ((s.floor('Min').to_series().groupby(s.date).rank(method='dense') > 1)

                                                .to_numpy())

df_final = df[m]


Out[338]:

                            price

quote_ts

2020-05-15 15:00:01.234517   1300

2020-05-16 14:01:00.582517   1400

2020-05-17 14:02:00.524567   1900


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

添加回答

举报

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