跳至主要內容

2881. 创建新列


2881. 创建新列

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

题目

DataFrame employees

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

A company plans to provide its employees with a bonus.

Write a solution to create a new column name bonus that contains the doubled values of the salary column.

The result format is in the following example.

Example 1:

Input:

DataFrame employees

+---------+--------+
| name    | salary |
+---------+--------+
| Piper   | 4548   |
| Grace   | 28150  |
| Georgia | 1103   |
| Willow  | 6593   |
| Finn    | 74576  |
| Thomas  | 24433  |
+---------+--------+

Output:

+---------+--------+--------+
| name    | salary | bonus  |
+---------+--------+--------+
| Piper   | 4548   | 9096   |
| Grace   | 28150  | 56300  |
| Georgia | 1103   | 2206   |
| Willow  | 6593   | 13186  |
| Finn    | 74576  | 149152 |
| Thomas  | 24433  | 48866  |
+---------+--------+--------+

Explanation:

A new column bonus is created by doubling the value in the column salary.

题目大意

DataFrame employees

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

一家公司计划为员工提供奖金。

编写一个解决方案,创建一个名为 bonus 的新列,其中包含 salary 值的 两倍

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

示例 1:

输入:

DataFrame employees

+---------+--------+
| name    | salary |
+---------+--------+
| Piper   | 4548   |
| Grace   | 28150  |
| Georgia | 1103   |
| Willow  | 6593   |
| Finn    | 74576  |
| Thomas  | 24433  |
+---------+--------+

输出:

+---------+--------+--------+
| name    | salary | bonus  |
+---------+--------+--------+
| Piper   | 4548   | 9096   |
| Grace   | 28150  | 56300  |
| Georgia | 1103   | 2206   |
| Willow  | 6593   | 13186  |
| Finn    | 74576  | 149152 |
| Thomas  | 24433  | 48866  |
+---------+--------+--------+

解释:

通过将 salary 列中的值加倍创建了一个新的 bonus 列。

解题思路

解题思路

利用 Pandas 的直接列操作功能,可以高效地向 DataFrame 添加新列,此功能允许我们基于现有列的值进行计算,并将结果赋值给新列。

  1. 新增列

    • 使用 employees['bonus']DataFrame 添加新列。如果该列已存在,则会覆盖原值。
    • 通过 employees['salary'] * 2 进行逐元素计算,生成新列的值。
  2. 返回 DataFrame

    • 新增列后,原 DataFrame 被修改(Pandas 默认行为是就地操作 DataFrame),并作为结果返回。

复杂度分析

  • 时间复杂度O(n),其中 n 是 DataFrame 的行数,新增 bonus 列需要逐元素计算操作。
  • 空间复杂度O(n),新增的 bonus 列需要额外的存储空间。

代码

import pandas as pd

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