Python 3.x 如何排除数据帧中出现的特定日期?
我有一个postgres表,其内容如下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
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
的元素是什么类型的?我发现了我的错误。我已将日期设置为索引。顺便说一下,日期有日期类型。好的,干得好:)