每日leetcode

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

2883. 删去丢失的数据 - 力扣(LeetCode)

题目

DataFrame students
+-------------+--------+
| Column Name | Type   |
+-------------+--------+
| student_id  | int    |
| name        | object |
| age         | int    |
+-------------+--------+

在 name 列里有一些具有缺失值的行。

编写一个解决方案,删除具有缺失值的行。

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

示例 1:

输入:
+------------+---------+-----+
| student_id | name    | age |
+------------+---------+-----+
| 32         | Piper   | 5   |
| 217        | None    | 19  |
| 779        | Georgia | 20  |
| 849        | Willow  | 14  |
+------------+---------+-----+
输出:
+------------+---------+-----+
| student_id | name    | age |
+------------+---------+-----+
| 32         | Piper   | 5   |
| 779        | Georgia | 20  |
| 849        | Willow  | 14  |
+------------+---------+-----+
解释:
学号为 217 的学生所在行在 name 列中有空值,因此这一行将被删除。

思路

  1. 使用df的dropna(axis, how)方法,因为要删的是行,所以axis=0;因为要求只要有某个数据是空值就删除,所以how="any";原地替换:inplace=True;只考虑"name"列(这个题目写的也太烂,要考虑的是name列,需求竟然没有写只考虑name列,而是在background写了而已,辣鸡):subset=["name"]。

代码实现

import pandas as pd

def dropMissingData(students: pd.DataFrame) -> pd.DataFrame:
    students.dropna(axis=0, how="any", subset=["name"], inplace=True)
    return students

知识积累

  • 删除空值数据:df.dropna(axis, how, thresh, subset, inplace)
    • axis:待删轴。0或"index"为删除行数据,1或"columns"为删除列数据,默认为0。
    • how:筛选方法。"any"为只要有控制就删除对应轴的数据,"all"为该轴全空才删除,默认为"any"。
    • thresh:非空元素最低数量。如果该轴的非空元素数量小于该值,则删除该轴数据,默认为None,int类型。
    • subset:子集。如果待删的是行数据,那么subset的元素就是列索引;如果待删的是列数据,那么subset的元素就是行索引。subset的区域是判断该轴是否删除的判断依据。
    • inplace:是否原地替换,默认为False。

网站公告

今日签到

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