python - 如何删除特定索引的行?

标签 python database pandas numpy dataframe

我有一个多索引数据框。我想删除索引以 09:15:00 结尾的行。

我这里有一个可重现的代码:https://gist.github.com/RJUNS/f4ad32d9b6da8cf4bedde0046a26f368

                               CLOSE  HIGH    LOW     OPEN    VOLUME
2017-09-07 09:15:00   VEDL    320.20  320.20  320.20  320.20  311
2017-09-07 09:30:00   ACC     1808.05 1812.95 1798.75 1806.80 21611
                      VEDL    319.85  320.60  319.25  320.00  651516
2017-09-07 09:45:00   ACC     1805.00 1812.00 1802.10 1810.45 12679
                      VEDL    319.35  320.80  318.85  319.90  417515
2017-09-07 10:00:00   ACC     1802.00 1807.15 1800.85 1805.00 9915
                      VEDL    320.15  320.30  319.20  319.50  259587

换句话说,我想删除行:

2017-09-07 09:15:00 VEDL    320.20  320.20  320.20  320.20  311

请注意,我有多个以 09:15:00 结尾的索引

请问有人有什么解决办法吗?

最佳答案

使用boolean indexing , 用于选择第一级 get_level_values并与时间比较:

df1 = df[df.index.get_level_values(0).time != datetime.time(9, 15)]
print (df1)

...
                    VEDL  332.20  332.75  332.00  332.55   154978
2017-09-08 08:30:00 INFY  890.00  890.00  889.70  889.70    64289
                    VEDL  331.50  332.20  331.40  332.20   393830
2017-09-08 08:45:00 INFY  889.85  890.00  889.60  890.00   142584
                    VEDL  331.70  332.00  331.20  331.40   342857
2017-09-08 09:00:00 INFY  889.65  890.10  889.25  889.85   234244
                    VEDL  331.85  332.00  331.45  331.65   458025
2017-09-08 09:30:00 INFY  886.45  889.85  885.90  889.60   365388
                    VEDL  331.45  332.40  331.20  331.70   912145
...

另一种解决方案 DatetimeIndex.indexer_at_time对于行的位置,然后获取 MultiIndex 值并通过 drop 删除:

df1 = df.drop(df.index[df.index.get_level_values(0).indexer_at_time('9:15:00')])

使用由 DatetimeIndex.strftime 创建的字符串的 comapre 解决方案:

df1 = df[df.index.get_level_values(0).strftime('%H:%M') != '09:15']

关于python - 如何删除特定索引的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46138760/

相关文章:

python - Systemd 丢弃随机的标准输出

database - 如何建立多语言网站?

python - Pandas :替换函数语法

python - 如何根据数据框中以前的值制作一列

python - 如何在 Python 中将 Ragged Tensor 转换为 Tensor?

python - 这个链式分配是如何工作的?

python - python如何转换javascript时间格式?

android - 如何在 SQLite 中更新 2000 行时最小化时间要求

php - 使用 PHP 单击提交按钮后无法将数据保存到数据库中

python - Pandas:尝试基于 for 循环删除行?