题目描述
表: Users
+----------------+---------+
| Column Name | Type |
+----------------+---------+
| user_id | int |
| name | varchar |
+----------------+---------+
user_id 是该表的主键(具有唯一值的列)。
该表包含用户的 ID 和名字。名字仅由小写和大写字符组成。
编写解决方案,修复名字,使得只有第一个字符是大写的,其余都是小写的。
返回按 user_id
排序的结果表。
返回结果格式示例如下。
示例 1:
输入:
Users table:
+---------+-------+
| user_id | name |
+---------+-------+
| 1 | aLice |
| 2 | bOB |
+---------+-------+
输出:
+---------+-------+
| user_id | name |
+---------+-------+
| 1 | Alice |
| 2 | Bob |
+---------+-------+
解题思路
- 提取 name 列的第一个字符并将其转换为大写。
- 提取 name 列的其余部分(从第二个字符到最后)并将其转换为小写
- 连接第一个字符的大写和其余部分的小写
- 把结果按照 user_id 进行排序
代码实现
使用MySQL修复表中的名字
SELECT user_id, CONCAT(UPPER(SUBSTRING(name, 1, 1)), LOWER(SUBSTRING(name, 2))) AS name
FROM Users
ORDER BY user_id;
使用Pandas修复表中的名字
import pandas as pd
def fix_names(users: pd.DataFrame) -> pd.DataFrame:
users["name"] = users["name"].str[0].str.upper() + users["name"].str[1:].str.lower()
return users.sort_values("user_id")