题目
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 列。具体步骤为:
- employees['salary']:
这就是访问 pandas 中 DataFrame 的特定列的方式。employees 为DataFrame,['salary'] 表示名为 salary 的列。它将返回 pandas Series,这是一个一维标签数组。所以,employees['salary'] 将为您提供 DataFrame employees 的 salary 列中的所有值。
- employees['salary']
pandas 允许进行矢量化操作。当您将 Series 乘以标量(单个数字)时,它将 Series 中的每个元素乘以该数字。在我们的例子中,它将 salary 列中的每个值都加倍。
- 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