我正在处理数据集,当我发现差异后尝试创建新列时,我得到了 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'
。谢谢您的帮助。
答案 0 :(得分:1)
您需要将倒数第二行替换为:
df['filtered'] = df.loc[df['col2'].diff().abs() > cutoff, 'col2']
假设您要获得“ col2”的过滤版本。如@RafaelC所述,当前的.loc []操作会返回所有行过滤器适用的列(在这种情况下为2),因此会出现错误。