如何排除熊猫数据帧中某个日期的出现?



我有一个postgres表,内容如下

date    |   metric    |    device     |         mse         
------------+-------------+---------------+---------------------
2018-04-02 | cpu         | 10.17.100.1   |    10.8353316326531
2018-04-03 | cpu         | 10.17.100.1   |    1.84977070342026
2018-04-04 | cpu         | 10.17.100.1   |    6.94701678240741
2018-04-05 | cpu         | 10.17.100.1   |    8.38619212962963
2018-04-06 | cpu         | 10.17.100.1   |      2.468402069161
2018-04-07 | cpu         | 10.17.102.1   |    7.38240908709163
2018-04-08 | cpu         | 10.17.102.1   |    11.7493083375325
2018-04-02 | mem         | 10.17.102.1   |    3.12962962962963
2018-04-03 | mem         | 10.17.102.1   |    6.25925925925926
2018-04-04 | mem         | 10.17.102.1   |     3.5697337962963
2018-04-05 | mem         | 10.17.102.1   |   0.440104166666667
2018-04-06 | mem         | 10.17.102.1   |                   0
2018-04-07 | mem         | 10.17.102.1   |    28.1666666666667
2018-04-08 | mem         | 10.17.102.1   |    28.1666666666667
2018-04-02 | sap_drops   | 10.17.102.1   |    0.25067507558579
2018-04-03 | sap_drops   | 10.17.102.1   |   0.240537426776266
2018-04-04 | sap_drops   | 10.17.102.1   |   0.137486181972789
2018-04-05 | sap_drops   | 10.17.102.1   |   0.325178394274376
2018-04-06 | sap_drops   | 10.17.102.1   |   0.227994614512472
2018-04-07 | sap_drops   | 10.17.102.1   |   0.231201367892836
2018-04-08 | sap_drops   | 10.17.102.1   |   0.190689097012262

如您所见,表中有几个日期2018-04-08实例。我想要的是删除表中出现的每个2018-04-08,其余部分保持不变。

以下是表格的结构

Table "public.device_mse"
Column |          Type          | Modifiers | Storage  | Stats target | Description 
--------+------------------------+-----------+----------+--------------+-------------
date   | date                   |           | plain    |              | 
metric | character varying(255) |           | extended |              | 
device | character varying(255) |           | extended |              | 
mse    | double precision       |           | plain    |              | 

根据这个问题中提供的答案从熊猫数据帧日期范围内排除日期,我尝试做这样的事情

import pandas as pd
import psycopg2
import pandas.io.sql as psql
import datetime
conn = psycopg2.connect(database="metrics", user="souvik", password="********", host="localhost", port="5432")
cur = conn.cursor()
df = psql.read_sql("Select * from device_mse", conn)
df2 = df["date" != datetime.datetime.strptime('2018-04-08', '%Y-%m-%d').date()]
print(df2)

但是我收到如下错误

Traceback (most recent call last):
File "/home/souvik/utorapp/lib/python3.5/site-packages/pandas/core/indexes/base.py", line 2525, in get_loc
return self._engine.get_loc(key)
File "pandas/_libs/index.pyx", line 117, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/index.pyx", line 139, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/hashtable_class_helper.pxi", line 1265, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas/_libs/hashtable_class_helper.pxi", line 1273, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: True
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/souvik/PycharmProjects/Pandas/compare_stats20.py", line 46, in <module>
df2 = df["date" != datetime.datetime.strptime('2018-04-08', '%Y-%m-%d').date()]
File "/home/souvik/app/lib/python3.5/site-packages/pandas/core/frame.py", line 2139, in __getitem__
return self._getitem_column(key)
File "/home/souvik/app/lib/python3.5/site-packages/pandas/core/frame.py", line 2146, in _getitem_column
return self._get_item_cache(key)
File "/home/souvik/app/lib/python3.5/site-packages/pandas/core/generic.py", line 1842, in _get_item_cache
values = self._data.get(item)
File "/home/souvik/app/lib/python3.5/site-packages/pandas/core/internals.py", line 3843, in get
loc = self.items.get_loc(item)
File "/home/souvik/app/lib/python3.5/site-packages/pandas/core/indexes/base.py", line 2527, in get_loc
return self._engine.get_loc(self._maybe_cast_indexer(key))
File "pandas/_libs/index.pyx", line 117, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/index.pyx", line 139, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/hashtable_class_helper.pxi", line 1265, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas/_libs/hashtable_class_helper.pxi", line 1273, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: True

我做错了什么?

你可以试试:

df = df[df.date != '2018-04-08']

我意识到我的日期被设置为索引,因此我遇到了一个关键错误。删除索引后,现在它工作正常!

最新更新