Pandas 基于某一列不同值获取行数据

Pandas 基于某一列不同值获取行数据

在数据分析中,我们通常需要从数据集中筛选出符合某个条件的行数据。Pandas提供了丰富的方法来实现这一目标,其中一种常见的情况是基于一个列的不同值获取行数据。

阅读更多:Pandas 教程

方法一:利用groupby和apply实现

首先,我们可以使用Pandas中的groupby方法根据特定列分组,然后应用apply方法,利用df.loc获取对应的行。例如,假设我们有一个包含下列数据的DataFrame:

Name Age Gender
Tom 18 M
Jerry 21 M
Alice 18 F
Bob 25 M

要求基于Gender列的不同值(M和F)获取对应的行数据,可以采用以下代码:

>>> import pandas as pd 
>>> data = pd.DataFrame({'Name': ['Tom', 'Jerry', 'Alice', 'Bob'], 
...                      'Age': [18, 21, 18, 25], 
...                      'Gender': ['M', 'M', 'F', 'M']}) 

>>> grouped = data.groupby('Gender') 

>>> result = grouped.apply(lambda x: x.loc[x.index[0]]) 
>>> result

        Name  Age Gender
Gender                 
F      Alice   18      F
M        Tom   18      M

结果表明,我们根据Gender列的不同值(F和M),分别获取了对应的行数据。但是需要注意,由于groupby方法返回的是一个分组对象,apply处理后数据仍然是groupby的形式,在结果中Gender列被提升为索引。

方法二:使用drop_duplicates方法

除了上述方法,还可以使用Pandas中的drop_duplicates方法。该方法可以强制DataFrame只保留指定列中的唯一值,并返回一个新的DataFrame。例如:

>>> result = data.drop_duplicates(subset=['Gender'], keep='first')
>>> result

    Name  Age Gender
0    Tom   18      M
2  Alice   18      F

上述代码中,我们指定了Gender列作为去重列,利用keep参数控制去重行后保留哪一个,’first’表示保留第一个出现的行数据。

总结

本文介绍了两种基于某一列不同值获取行数据的方法,即groupby + apply和drop_duplicates。这两种方法各有优劣,需要根据实际情况选择。此外,Pandas还支持类似于SQL语句中的SELECT DISTINCT等方法,具体可参考官方文档。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程