如何在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

