Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何排除数据帧中出现的特定日期?_Python 3.x_Postgresql_Pandas - Fatal编程技术网

Python 3.x 如何排除数据帧中出现的特定日期?

Python 3.x 如何排除数据帧中出现的特定日期?,python-3.x,postgresql,pandas,Python 3.x,Postgresql,Pandas,我有一个postgres表,其内容如下 date | metric | device | mse ------------+-------------+---------------+--------------------- 2018-04-02 | cpu | 10.17.100.1 | 10.8353316326531 2018-04-03 | cpu | 10.17.10

我有一个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
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
如您所见,表中有几个日期
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)
但我得到一个如下的错误

    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
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
回溯(最近一次呼叫最后一次):
文件“/home/souvik/utorapp/lib/python3.5/site packages/pandas/core/index/base.py”,第2525行,在get_loc中
返回发动机。获取位置(钥匙)
文件“pandas/_libs/index.pyx”,第117行,在pandas._libs.index.IndexEngine.get_loc中
文件“pandas/_libs/index.pyx”,第139行,在pandas._libs.index.IndexEngine.get_loc中
pandas._libs.hashtable.PyObjectHashTable.get_项中的第1265行文件“pandas/_libs/hashtable_class_helper.pxi”
pandas._libs.hashtable.PyObjectHashTable.get_项中的文件“pandas/_libs/hashtable_class_helper.pxi”,第1273行
KeyError:正确
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/home/souvik/PycharmProjects/Pandas/compare_stats20.py”,第46行,in
df2=df[“date”!=datetime.datetime.strtime('2018-04-08','%Y-%m-%d')。date()]
文件“/home/souvik/app/lib/python3.5/site packages/pandas/core/frame.py”,第2139行,在__
返回self.\u getitem\u列(键)
文件“/home/souvik/app/lib/python3.5/site packages/pandas/core/frame.py”,第2146行,在“获取项目”列中
返回self.\u获取\u项目\u缓存(密钥)
文件“/home/souvik/app/lib/python3.5/site packages/pandas/core/generic.py”,第1842行,在获取项目缓存中
values=self.\u data.get(项目)
get中的文件“/home/souvik/app/lib/python3.5/site packages/pandas/core/internals.py”,第3843行
loc=自身项目。获取loc(项目)
文件“/home/souvik/app/lib/python3.5/site packages/pandas/core/index/base.py”,第2527行,在get_loc中
返回self.\u引擎。获取\u loc(self.\u可能\u cast\u索引器(键))
文件“pandas/_libs/index.pyx”,第117行,在pandas._libs.index.IndexEngine.get_loc中
文件“pandas/_libs/index.pyx”,第139行,在pandas._libs.index.IndexEngine.get_loc中
pandas._libs.hashtable.PyObjectHashTable.get_项中的第1265行文件“pandas/_libs/hashtable_class_helper.pxi”
pandas._libs.hashtable.PyObjectHashTable.get_项中的文件“pandas/_libs/hashtable_class_helper.pxi”,第1273行
KeyError:正确
我做错了什么?

您可以尝试:

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

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

date
的元素是什么类型的?我发现了我的错误。我已将日期设置为索引。顺便说一下,日期有日期类型。好的,干得好:)