每日leetcode

发布于:2025-06-20 ⋅ 阅读:(18) ⋅ 点赞:(0)

2887. 填充缺失值 - 力扣(LeetCode)

题目

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. 使用df的fillna()方法,指定quantity列的缺失值填充为0。

代码实现

import pandas as pd

def fillMissingValues(products: pd.DataFrame) -> pd.DataFrame:
    products = products.fillna(value={"quantity":0})
    return products

知识积累

  • df填充缺失值:df.fillna(method=None, limit=None, axis=None, value=None, inplace=False)
    • method:填充方法,"ffill"为前向填充,将缺失值填充为前面的值;"bfill"为后向填充,将缺失值填充为后面的值。
    • limit:若有连续的空值,最多能被填充limit个,剩下就不能填充了,需跟method使用。
    • value:用于填充空值的值,也可以配合{列名:填充值}字典指定对应列的填充值。
    • axis:指定要填充的轴,0为行,1为列。
    • inplace:是否原地替换,如果是,返回值为None,不是则返回DataFrame。
  • 也可以直接指定列:df[列名].fillna(value, inplace)

官方题解

  • 官解用的是第二种方法。
  • 稍微看了一下,直接指定列空间开销小,时间开销大;直接指定整个DataFrame时间开销小,空间开销大。
  • 复现:
  • import pandas as pd
    
    def fillMissingValues(products: pd.DataFrame) -> pd.DataFrame:
        products["quantity"].fillna(0, inplace=True)
        return products


网站公告

今日签到

点亮在社区的每一天
去签到