如何用Python的pandas库修改列值,批量更新员工工资

85 阅读2分钟

题目

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 |
+---------+--------+
解释:
每个人的薪水都被加倍。

解题方案

1、审题,理解题意

题目的意思是修改 DataFrame employees 中的 salary 列,使每个员工的工资翻一番。方法是将 salary 列值乘以 2,然后将 salary 列值更新。

在 pandas 中,可以按列进行操作,影响列中的每个元素。按列操作: 可以对 DataFrame Series 中的每个单独元素执行的操作。按列操作的几种类型的示例包括算术操作、聚合函数、筛选和条件操作以及字符串操作。

2、解题思路

通过将每个值加倍来修改 employees DataFrame 的 salary 列。具体步骤为:

  1. employees['salary']:

这就是访问 pandas 中 DataFrame 的特定列的方式。employees 为DataFrame,['salary'] 表示名为 salary 的列。它将返回 pandas Series,这是一个一维标签数组。所以,employees['salary'] 将为您提供 DataFrame employees 的 salary 列中的所有值。

  1. employees['salary']

pandas 允许进行矢量化操作。当您将 Series 乘以标量(单个数字)时,它将 Series 中的每个元素乘以该数字。在我们的例子中,它将 salary 列中的每个值都加倍。

  1. employees['salary'] = ...:

此行更新 DataFrame 的现有列中的值。如果因为某种原因,salary 不存在,pandas 就会创建它。在语句 employees['salary'] = employees['salary'] * 2中,我们实际上要做的是从 salary 列中取出每个工资值,将其加倍,然后用这些新计算的值更新原始的 salary 列。

DataFrame employees 保留其 salary 列,但此列中的值现在已更新为其原始金额的两倍。

3、代码实现

import pandas as pd

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

4、执行结果

image-20231025091641558