题目
DataFrame products
+-------------+--------+
| Column Name | Type |
+-------------+--------+
| name | object |
| quantity | int |
| price | int |
+-------------+--------+
编写一个解决方案,在 quantity
列中将缺失的值填充为 **0**
。
返回结果如下示例所示。
示例 1:
输入:
+-----------------+----------+-------+
| name | quantity | price |
+-----------------+----------+-------+
| Wristwatch | 32 | 135 |
| WirelessEarbuds | None | 821 |
| GolfClubs | None | 9319 |
| Printer | 849 | 3051 |
+-----------------+----------+-------+
输出:
+-----------------+----------+-------+
| name | quantity | price |
+-----------------+----------+-------+
| Wristwatch | 32 | 135 |
| WirelessEarbuds | 0 | 821 |
| GolfClubs | 0 | 9319 |
| Printer | 849 | 3051 |
+-----------------+----------+-------+
解释:
Toaster 和 Headphones 的数量被填充为 0。
解题方案
1、审题,理解题意
题目意思是有一个名为 products 的 DataFrame,它包含产品数据。然而,一些“数量”数据丢失了。要求用值 0 填充缺失的数量数据。此时我们可以用fillna 函数中的指定方法来替换 None(或通常的 DataFrame 表示形式中的 NaN)值。
fillna 函数参数定义:
我们重点介绍fillna 函数中最常用的参数:
- value: 标量,字典,Series 或 DataFrame。用于填充空洞的值(例如 0)。这就是我们在解决方案中使用的。
- method: {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}。用于填充重新索引 Series 中的空洞的方法。默认为 None。
- axis: {0 or ‘index’, 1 or ‘columns’}。沿其填充缺失值的轴。
- inplace: 布尔值。如果为True,则原地填充。注意:这将修改此对象上的任何其他视图。默认值为 False。
2、解题思路
对于本题目,我们使用:
products['quantity'].fillna(0, inplace=True)
-
由于我们正在尝试填充 products DataFrame 的 quantity 列中缺失的数据,因此我们将 fillna 函数应用于 products['quantity']。
-
由于我们希望将缺少的值(NaN 或 None)替换为 0,因此使用 0 作为 value 参数。
-
最后,我们想返回原始的 DataFrame,所以我们设置了 inplace=True 来直接修改原始的 DataFrame,而不返回新的 DataFrame。
请注意,如果不使用 inplace=True,则必须像这样捕获结果:products = products['quantity'].fillna(0)
3、代码实现
import pandas as pd
def fillMissingValues(products: pd.DataFrame) -> pd.DataFrame:
products['quantity'].fillna(0, inplace=True)
return products