📜  如何修复:Pandas 中的 KeyError(1)

📅  最后修改于: 2023-12-03 15:38:09.249000             🧑  作者: Mango

如何修复:Pandas 中的 KeyError

在使用 Pandas 进行数据处理时,可能会遇到 KeyError 错误。 KeyError 表示 Pandas 无法找到你正在尝试引用的某个键。这可能会阻止你的代码正常工作,但是幸运的是,有一些简单的步骤可以遵循以解决此错误。

1. 检查键名称

第一步是确保你正在使用正确的键名称。如果 DataFrame 或 Series 中没有键,则会返回 KeyError。如果键名称大小写不正确,则也会出现 KeyError。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'],
        'age': [25, 30, 35],
        'city': ['New York', 'Paris', 'London']}

df = pd.DataFrame(data)

print(df['Name'])  # 注意这里是 'Name' 而不是 'name'

在运行上述代码时,将输出以下错误消息:

KeyError: 'Name'

要修复此错误,请单击 DataFrame 或 Series 中列的确切名称。在上述示例中,列名为 'name',因此应将代码更改为:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'],
        'age': [25, 30, 35],
        'city': ['New York', 'Paris', 'London']}

df = pd.DataFrame(data)

print(df['name'])  # 这里是 'name' 而不是 'Name'

这将输出以下内容:

0      Alice
1        Bob
2    Charlie
Name: name, dtype: object
2. 检查索引

Pandas 中的数据可以使用 loc 和 iloc 方法进行索引。如果你尝试使用无效索引进行引用,则会触发 KeyError。在这种情况下,你需要检查索引并确保使用的是有效索引。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'],
        'age': [25, 30, 35],
        'city': ['New York', 'Paris', 'London']}

df = pd.DataFrame(data)

print(df.loc[3])  # 注意此处索引应该是 0, 1, 2 而不是 3

在上述代码中,索引应该是 0、1 和 2,而不是 3。因此,将导致以下错误:

KeyError: 3

为了修复此错误,请更正索引:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'],
        'age': [25, 30, 35],
        'city': ['New York', 'Paris', 'London']}

df = pd.DataFrame(data)

print(df.loc[2])  # 注意索引在这里是 2 而不是 3

将输出以下内容:

name    Charlie
age          35
city     London
Name: 2, dtype: object
3. 重新索引

如果 DataFrame 或 Series 中不存在要引用的键,则可以使用 reindex 方法创建一个新的索引,并将 NaN 用作空值。这有助于避免 KeyError。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie'],
        'age': [25, 30, 35],
        'city': ['New York', 'Paris', 'London']}

df = pd.DataFrame(data)

print(df.reindex([0, 1, 2, 3]))  # 注意这里的索引是 0, 1, 2, 3

在上述代码中,使用 reindex 方法创建新的索引。由于原始 DataFrame 中没有行索引为 3,因此将使用 NaN 填充该行。这将输出以下内容:

      name   age      city
0    Alice  25.0  New York
1      Bob  30.0     Paris
2  Charlie  35.0    London
3      NaN   NaN       NaN
结论

KeyError 是一个常见的 Pandas 错误。在遇到此错误时,你应该先检查键名称和索引是否正确。如果名称和索引都正确,则可以使用 reindex 方法重新索引。通过遵循这些简单的步骤,你可以轻松解决 KeyError 错误,并继续进行数据分析和处理。