
题目
作为一名精通Python的图书管理员,你正在搭建一个更高效地更新图书数据的系统。
编写一个名为 update_availability 的函数,用于更新数据表中特定 book_id 的 availability 值,并返回更新后的数据表。
注意: 如果找不到 book_id,则返回原始数据而不进行任何更改。
示例:
输入:
input_df
| book_id | book_title | availability |
|---|---|---|
| 0 | Moby Dick | 5 |
| 1 | 1984 | 7 |
| 2 | To Kill a Mockingbird | 3 |
| 3 | The Great Gatsby | 2 |
| 4 | Pride and Prejudice | 10 |
输出:
update_availability(book_id=3, copies=8, df_books=input_df) ->
| book_id | book_title | availability |
|---|---|---|
| 0 | Moby Dick | 5 |
| 1 | 1984 | 7 |
| 2 | To Kill a Mockingbird | 3 |
| 3 | The Great Gatsby | 8 |
| 4 | Pride and Prejudice | 10 |
答案
解题思路
此问题的关键在于更新指定 book_id 的 availability 值。如果找到了对应的 book_id,则更新可用性;否则,返回原始数据。
答案代码
import pandas as pd
def update_availability(book_id, availability, df_books):
# 检查给定的 book_id 是否在数据框中
if book_id in df_books['book_id'].values:
# 更新指定 book_id 的 availability 值
df_books.loc[df_books['book_id'] == book_id, 'availability'] = availability
# 返回更新后的数据框或原始数据框
return df_books
input_df = pd.DataFrame({
'book_id': [0, 1, 2, 3, 4],
'book_title': ['Moby Dick', '1984', 'To Kill a Mockingbird', 'The Great Gatsby', 'Pride and Prejudice'],
'availability': [5, 7, 3, 2, 10]
})
print(update_availability(book_id=3, availability=8, df_books=input_df))
df_books['book_id'].values: 提取数据中的所有 book_id。if book_id in df_books['book_id'].values:: if语句判断 book_id 是否在数据中。df_books.loc[df_books['book_id'] == book_id, 'availability'] = availability: 使用 Pandas 的loc函数更新指定book_id的availability值。
更多详细答案可关注公众号查阅。



















