如何在Pandas删除行
时间:2020-02-23 14:42:04 来源:igfitidea点击:
在本教程中,我们将看到如何在Pandas 中删除行。
我们可以使用DataFrame.Drop()方法在Pandas的DataFrame中删除行。
dataframe.drop()的语法
DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
其中 labels:
删除的索引或者列。 axis:
axis=0
用于删除行和 axis=1
用于删除列。
对于此帖子,我们将使用Axis = 0删除行。
自从 axis=0
是默认值,我们可以忽略此属性。 columns:
它是标签的替代品,并用来删除列(在0.21版中引入)。 index:
它是标签和用来删除指数的替代方案(在版本0.21中引入)。 inplace:
如果为false,则不会修改原始数据帧。
Pandas 基于索引的行
我们可以指定索引标签以删除行。
删除单行
这是一个例子:
import pandas as pd dic = {'Name': ['Netherlands','China','Bhutan','Russia'], "Population": [20000,40000,1000,10000]} Country_df = pd.DataFrame(dic,index = ['One','Two','Three','Four']) print("-------Original Dataframe-------\n",Country_df) #Drop index Two Country_df = Country_df.drop(labels='Two') print("-------Changed Dataframe-------\n",Country_df)
输出:
-------Original Dataframe------ Name Population One Netherlands 20000 Two China 40000 Three Bhutan 1000 Four Russia 10000 -------Changed Dataframe------ Name Population One Netherlands 20000 Three Bhutan 1000 Four Russia 10000
正如我们所看到的,则具有索引的行 Two
从Pandas DataFrame删除了。
删除多行
更改突出显示线以删除三个和四个索引。
#Drop indices Three and Four Country_df = Country_df.drop(labels=['Three','Four'])
输出:
-------Original Dataframe------ Name Population One Netherlands 20000 Two China 40000 Three Bhutan 1000 Four Russia 10000 -------Changed Dataframe------ Name Population One Netherlands 20000 Two China 40000
如我们所见,具有索引的行 Three
和 Four
从Pandas DataFrame删除了。
如果我们想要修改原始数据帧,我们可以通过 inplace=True
#Drop indices Three and Four Country_df.drop(labels=['Three','Four'],inPlace=True)
正如我们所看到的,我们不必重新分配 Country_df
现在。
Pandas丢弃条件
我们还可以根据某些条件删除行。
以下是一个示例:假设我们要删除人口小于或者等于10000的所有行。
我们可以通过拨出条件来获取所有这些行的索引并将其传递给Drop()方法。
import pandas as pd dic = {'Name': ['Netherlands','China','Bhutan','Russia'], "Population": [20000,40000,1000,10000]} Country_df = pd.DataFrame(dic,index = ['One','Two','Three','Four']) print("-------Original Dataframe-------\n",Country_df) #Delete all the rows whose population is less than 10000 Country_df.drop(Country_df[Country_df['Population']<=10000].index,inplace=True) print("-------Changed Dataframe-------\n",Country_df)
输出:
-------Original Dataframe------ Name Population One Netherlands 20000 Two China 40000 Three Bhutan 1000 Four Russia 10000 -------Changed Dataframe------ Name Population One Netherlands 20000 Two China 40000
Pandas 删除NaN行
你可以丢弃值 NaN
行使用 dropna()
方法。
这是一个例子:
import numpy as np import pandas as pd dic = {'Name': ['Netherlands','China','Bhutan','Russia'], "Population": ['NaN',40000,'NaN',10000]} Country_df = pd.DataFrame(dic,index = ['One','Two','Three','Four']) Country_df =Country_df.replace('NaN',np.NaN) print("-------Original Dataframe-------\n",Country_df) Country_df = Country_df.dropna() print("-------Changed Dataframe-------\n",Country_df)
输出:
-------Original Dataframe------ Name Population One Netherlands NaN Two China 40000.0 Three Bhutan NaN Four Russia 10000.0 -------Changed Dataframe------ Name Population Two China 40000.0 Four Russia 10000.0
如我们所见,包含NaN的行从Pandas DataFrame中删除。
Pandas删除重复行
我们可以使用重复行 DataFrame.drop_duplicates()
方法。
这是一个例子:
import pandas as pd dic = {'Name': ['Netherlands','China','Netherlands','Russia'], "Population": [20000,40000,20000,10000]} Country_df = pd.DataFrame(dic,index = ['One','Two','Three','Four']) print("-------Original Dataframe-------\n",Country_df) Country_df = Country_df.drop_duplicates() Country_df = Country_df.dropna() print("-------Changed Dataframe-------\n",Country_df)
输出:
-------Original Dataframe------ Name Population One Netherlands 20000 Two China 40000 Three Netherlands 20000 Four Russia 10000 -------Changed Dataframe------ Name Population One Netherlands 20000 Two China 40000 Four Russia 10000