题目
作为一名精通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
值。
更多详细答案可关注公众号查阅。