删除具有超出边界的值的行

问题描述 投票:0回答:1

我有一个csv数据库,想要删除具有超出指定值的值的行,Power_kW是数据库中的列之一,总共18列。我写了一个小代码,但由于某种原因,我不断收到以下错误。

import random as r
import numpy as np
import seaborn as sns

import matplotlib.pyplot as plt

df = pd.read_csv('D:\\Project\\database\\4-Final\\Final.csv')

df.drop(df['Power_kW']>=7000, inplace=True)
df.drop(df['Power_kW']<0, inplace=True)

f, axes = plt.subplots(0,0, figsize=(45,20))

sns.distplot( df["Power_kW"] , color="red", ax=axes[0, 0],kde=False,bins=100)
KeyError                                  Traceback (most recent call last)
<ipython-input-9-9e73af86f2fe> in <module>
      8 df = pd.read_csv('D:\\Project\\database\\4-Final\\Final.csv')
      9 
---> 10 df.drop(df['Power_kW']>=7000,inplace=True)
     11 df.drop(df['Power_kW']<0, inplace=True)
     12 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in drop(self, labels, axis, index, columns, level, inplace, errors)
   3938                                            index=index, columns=columns,
   3939                                            level=level, inplace=inplace,
-> 3940                                            errors=errors)
   3941 
   3942     @rewrite_axis_style_signature('mapper', [('copy', True),

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in drop(self, labels, axis, index, columns, level, inplace, errors)
   3778         for axis, labels in axes.items():
   3779             if labels is not None:
-> 3780                 obj = obj._drop_axis(labels, axis, level=level, errors=errors)
   3781 
   3782         if inplace:

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in _drop_axis(self, labels, axis, level, errors)
   3810                 new_axis = axis.drop(labels, level=level, errors=errors)
   3811             else:
-> 3812                 new_axis = axis.drop(labels, errors=errors)
   3813             result = self.reindex(**{axis_name: new_axis})
   3814 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in drop(self, labels, errors)
   4963             if errors != 'ignore':
   4964                 raise KeyError(
-> 4965                     '{} not found in axis'.format(labels[mask]))
   4966             indexer = indexer[~mask]
   4967         return self.delete(indexer)

KeyError: '[False False False ... False False False] not found in axis'

谢谢

python-3.x pandas csv jupyter-notebook
1个回答
0
投票

尝试

df.drop(df[df.Power_kW>=7000].index)

确保索引值是唯一的

© www.soinside.com 2019 - 2024. All rights reserved.