KeyError:在熊猫中创建新列时

时间:2019-04-01 19:24:12

标签: python python-3.x pandas numpy

我正在处理数据集,当我发现差异后尝试创建新列时,我得到了 KeyError:“已过滤”

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

d = {'col1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'col2': [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]}
df = pd.DataFrame(data=d)
fig, ax = plt.subplots(2, figsize=(8,8))

df['col2'].diff().plot(ax=ax[0])

cutoff = 3
df['filtered'] = df.loc[df['col2'].diff().abs() > cutoff]
df.plot(ax=ax[1])

我曾经创建过像(df['filtered'] = some operation)这样的新列,但是在这种情况下,它给出了KeyError: 'filtered'。谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要将倒数第二行替换为:

df['filtered'] = df.loc[df['col2'].diff().abs() > cutoff, 'col2']

假设您要获得“ col2”的过滤版本。如@RafaelC所述,当前的.loc []操作会返回所有行过滤器适用的列(在这种情况下为2),因此会出现错误。