跳至主要內容

2884. 修改列


2884. 修改列

🟢   🔗 力扣open in new window LeetCodeopen in new window

题目

DataFrame employees

+-------------+--------+
| Column Name | Type   |
+-------------+--------+
| name        | object |
| salary      | int    |
+-------------+--------+

A company intends to give its employees a pay rise.

Write a solution to modify the salary column by multiplying each salary by 2.

The result format is in the following example.

Example 1:

Input: DataFrame employees

+---------+--------+
| name    | salary |
+---------+--------+
| Jack    | 19666  |
| Piper   | 74754  |
| Mia     | 62509  |
| Ulysses | 54866  |
+---------+--------+

Output:

+---------+--------+
| name    | salary |
+---------+--------+
| Jack    | 39332  |
| Piper   | 149508 |
| Mia     | 125018 |
| Ulysses | 109732 |
+---------+--------+

Explanation: Every salary has been doubled.

题目大意

DataFrame employees

+-------------+--------+
| Column Name | Type   |
+-------------+--------+
| name        | object |
| salary      | int    |
+-------------+--------+

一家公司决定增加员工的薪水。

编写一个解决方案,将每个员工的薪水乘以 2 来 修改 salary 列。

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

示例 1:

输入: DataFrame employees

+---------+--------+
| name    | salary |
+---------+--------+
| Jack    | 19666  |
| Piper   | 74754  |
| Mia     | 62509  |
| Ulysses | 54866  |
+---------+--------+

输出:

+---------+--------+
| name    | salary |
+---------+--------+
| Jack    | 39332  |
| Piper   | 149508 |
| Mia     | 125018 |
| Ulysses | 109732 |
+---------+--------+

解释: 每个人的薪水都被加倍。

解题思路

  • 直接使用 Pandas 的列操作功能,可以对整列数据进行矢量化操作(即一次性对整列应用数学运算),这比逐行操作更高效。
  • 通过 employees['salary'] *= 2,将 salary 列中的每个值都乘以 2。
  • 返回修改后的 DataFrame。

复杂度分析

  • 时间复杂度O(n),其中 n 是行数,需要对salary 列中的每个值进行乘法运算。
  • 空间复杂度O(1),修改是在原 DataFrame 中进行的,没有创建新列或复制 DataFrame。

代码

import pandas as pd

def modifySalaryColumn(employees: pd.DataFrame) -> pd.DataFrame:
  employees['salary'] *= 2
  return employees