龙空技术网

如何用Python的pandas库筛选出体重大于100kg的动物并降序排列

半农半X的X 46

前言:

眼前大家对“python输出大于某值的数”大体比较讲究,同学们都想要剖析一些“python输出大于某值的数”的相关知识。那么小编同时在网络上网罗了一些有关“python输出大于某值的数””的相关资讯,希望朋友们能喜欢,大家快快来了解一下吧!

题目

DataFrame animals+-------------+--------+| Column Name | Type   |+-------------+--------+| name        | object || species     | object || age         | int    || weight      | int    |+-------------+--------+

编写一个解决方案来列出体重 严格超过 100 千克的动物的名称。

按体重 降序 返回动物。

返回结果格式如下示例所示。

示例 1:

输入:DataFrame animals:+----------+---------+-----+--------+| name     | species | age | weight |+----------+---------+-----+--------+| Tatiana  | Snake   | 98  | 464    || Khaled   | Giraffe | 50  | 41     || Alex     | Leopard | 6   | 328    || Jonathan | Monkey  | 45  | 463    || Stefan   | Bear    | 100 | 50     || Tommy    | Panda   | 26  | 349    |+----------+---------+-----+--------+输出:+----------+| name     |+----------+| Tatiana  || Jonathan || Tommy    || Alex     |+----------+解释:所有体重超过 100 的动物都应包含在结果表中。Tatiana 的体重为 464,Jonathan 的体重为 463,Tommy 的体重为 349,Alex 的体重为 328。结果应按体重降序排序。

在 Pandas 中,方法链 允许我们在 DataFrame 上执行操作,而无需将每个操作拆分成单独的行或创建多个临时变量。

你能用 一行 代码的方法链完成这个任务吗?

解题方案1、审题,理解题意

题目的意思是列出体重严格超过 100 公斤的动物的名字,并按体重降序排列。我们可以看到Tatiana 的体重为 464,Jonathan 的体重为 463,Tommy 的体重为 349,Alex 的体重为 328。这四个动物的体重超过了100公斤,对它们进行排序为Tatiana Jonathan Tommy Alex

我们可以用如下的步骤来实现:

布尔索引:使用布尔条件筛选 DataFrame 中的行。在这个问题中,我们使用这种技术来选择体重超过 100 公斤的动物。 数据排序:sort_values() 方法: 用于基于一个或多个列对数据进行排序的 Pandas DataFrame 方法。在这个问题中,我们按重量降序对动物进行排序。 列选择:子集选择:在过滤和排序之后,我们从 DataFrame 中选择列的子集。在本例中,我们只选择 'name' 列来生成动物名称的最终列表。 方法链:链操作:通过用点连接方法,在一行中对 DataFrame 执行多个操作。这是 pandas 的一个强大功能,它可以使代码简洁,但对于新手来说可能很难读懂。Python 函数:我们定义了一个函数 findHeavyAnimals 来封装我们的解决方案并使其可重复使用。此函数将一个 DataFrame 作为参数,并返回另一个 DataFrame 作为结果。2、解题思路筛选操作:

我们从筛选体重超过100公斤的动物开始。

filtered_animals = animals[animals['weight'] > 100]
animals['weight'] > 100:这是一个布尔索引操作。对于 DataFrame 中的每一行,它检查 weight 列中的值是否大于 100。这会产生一个布尔型(True 或 False)序列。animals[...]:通过将我们的布尔序列放入 DataFrame 的索引括号中,我们筛选出条件为 True 的行。在此操作之后,我们的 DataFrame 中只剩下重量超过 100 公斤的动物的行。排序操作:

接下来,我们根据这些动物的体重按降序对它们进行排序。

sorted_animals = filtered_animals.sort_values(by='weight', ascending=False)
sort_values():这是一种应用于 DataFrame 的方法,允许基于列值进行排序。by='weight':我们指定要基于 weight 列进行排序。ascending=False:通过将此参数设置为 False,我们表示希望排序按降序进行(从最重到最轻)。选择 name 列:

最后,从排序的 DataFrame 中,我们只选择名称。

names = sorted_animals[['name']]
根据重量对行进行排序后,我们只对最终结果的 name 列感兴趣。通过使用双方括号 [['name']],我们只选择此列。双括号确保结果是 DataFrame 而不是 Series。如下图显示筛选和排序过程,最终得到结果。

3、代码实现

def findHeavyAnimals(animals: pd.DataFrame) -> pd.DataFrame:    filtered_animals = animals[animals['weight'] > 100]    sorted_animals = filtered_animals.sort_values(by='weight', ascending=False)    names = sorted_animals[['name']]    return names
4、执行结果

标签: #python输出大于某值的数 #python输出大于某值的列表