KeyError 更改数据框中的列

Posted

技术标签:

【中文标题】KeyError 更改数据框中的列【英文标题】:KeyError altering columns in dataframe 【发布时间】:2020-03-25 15:13:45 【问题描述】:

我正在尝试更改列或处理列,但遇到了一些 keyError 错误。致力于芝加哥犯罪数据分析。

例如当我尝试跑步时

ds["DATE OF OCCURRENCE"] = pd.to_datetime([ds["DATE OF OCCURRENCE"]], format="%m/%d/%Y %I:%M:%S %p")

密钥错误

Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)

完整代码:

import pandas as pd
url="https://data.cityofchicago.org/api/views/x2n5-8w5q/rows.csv?accessType=DOWNLOAD"
df= pd.read_csv(url)
ds = df.copy()
ds["DATE OF OCCURRENCE"] = pd.to_datetime([ds["DATE OF OCCURRENCE"]], format="%m/%d/%Y %I:%M:%S %p")

这是错误:

2896 尝试: -> 2897 返回 self._engine.get_loc(key) 2898 除了 KeyError:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi 在 pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi 在 pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: '发生日期'

在处理上述异常的过程中,又发生了一个异常:

KeyError Traceback(最近调用 最后)2帧 /usr/local/lib/python3.6/dist-packages/pandas/core/indexes/base.py 在 get_loc(self, key, method, tolerance) 2897 返回 self._engine.get_loc(key) 2898 除了 KeyError: -> 2899 返回 self._engine.get_loc(self._maybe_cast_indexer(key)) 2900 indexer = self.get_indexer([key],method=method,tolerance=tolerance) 2901 如果 indexer.ndim > 1 或 indexer.size > 1:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi 在 pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi 在 pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: '发生日期'

【问题讨论】:

【参考方案1】:

您的列已重命名,因此需要Crime_Date 并且还为Series 选择仅一列[]

ds["Crime_Date"] = pd.to_datetime(ds["Crime_Date"], format="%m/%d/%Y %I:%M:%S %p")

编辑:

列名中有一些空格,所以需要:

ds["DATE  OF OCCURRENCE"] = pd.to_datetime(ds["DATE  OF OCCURRENCE"], format="%m/%d/%Y %I:%M:%S %p")

【讨论】:

我删除了所有重命名并清除了 runtme,现在运行此代码后: import pandas as pd url="data.cityofchicago.org/api/views/x2n5-8w5q/…" df= pd.read_csv(url, encoding = "utf-8" ) df["DATE OF OCCURRENCE"] = pd.to_datetime([df["DATE OF OCCURRENCE"]], format="%m/%d/%Y %I:%M:%S %p") 我'我还是明白了。

以上是关于KeyError 更改数据框中的列的主要内容,如果未能解决你的问题,请参考以下文章

数据框中的对象值的 KeyError

Pandas 0.20.3“KeyError:'[1 2] not in index'”尝试选择要在 DataFrame 中显示的列时 [重复]

使用 .loc[] 提取行时出现 keyerror

错误:pandas hashtable keyerror

尝试更改 kivymd 标签文本时出现 KeyError

KeyError:“likeCount”和IndexError:Python中的列表索引超出范围