![](/img/trans.png)
[英]KeyError: 150L when accessing data in pandas DataFrame after dropping certain rows
[英]KeyError when dropping rows from Pandas dataframe
我正在尝试从 Pandas 数据框中删除一些行,因为它们会被视为数据中的异常值。 尝试使用教授教给我的方法删除一些行时,我遇到了 KeyError。
gdp_2019_outliers = np.where(df_gdp['2019'] > 6)
df_gdp.drop(gdp_2019_outliers[0], inplace=True)
gdp_2019_outliers_neg = np.where(df_gdp['2019'] < -3)
df_gdp.drop(gdp_2019_outliers_neg[0], inplace=True) # stacktrace points here as the cause
gdp_2020_outliers = np.where(df_gdp['2020'] > 3)
df_gdp.drop(gdp_2020_outliers[0], inplace=True)
gdp_2020_outliers_neg = np.where(df_gdp['2020'] < -15)
df_gdp.drop(gdp_2020_outliers_neg[0], inplace=True)
当您调用
drop<\/code>时,您需要将行索引或列名传递给它。
你可以给它一个掩码,这基本上就是你正在做的事情。
试试这个:
gdp_2019_outliers = np.where(df_gdp['2019'] > 6)
df_gdp.drop(gdp_2019_outliers[0], inplace=True)
gdp_2019_outliers_neg = np.where(df_gdp['2019'] < -3)
# Use this line instead:
df_gdp = df_gdp[~gdp_2019_outliers_neg[0]]
gdp_2020_outliers = np.where(df_gdp['2020'] > 3)
df_gdp.drop(gdp_2020_outliers[0], inplace=True)
gdp_2020_outliers_neg = np.where(df_gdp['2020'] < -15)
# Use this line instead as well:
df_gdp = [~gdp_2020_outliers_neg[0]]
让我们将源 DataFrame 创建为:
2019 2020
0 5 2
1 6 7
2 7 -15
3 8 8
4 -4 5
5 -3 -18
6 -2 7
7 -5 -3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.