You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将原有图书借阅记录表转换为包含借书和还书日期字段的新表

实现方法

核心逻辑

按书籍维度对借阅记录分组,同组内按借阅日期升序排序后,取后一条记录的借阅日期作为当前记录的还书日期,分组最后一条记录的还书日期默认留空。

1. SQL 实现(适用数据库场景)

假设原表名为book_borrow,可使用窗口函数LEAD实现,语句如下:

SELECT 
    Owner,
    Book,
    Date AS Pick_Date,
    LEAD(Date, 1) OVER (
        PARTITION BY Book 
        ORDER BY Date ASC
    ) AS Gave_Back_Book_Date
FROM book_borrow
ORDER BY Book, Pick_Date ASC;

参数说明:

  • PARTITION BY Book:按书名分组,不同书籍的借阅记录互不影响
  • ORDER BY Date ASC:同组内按借阅日期从小到大排序,保证取到的是下一位借阅者的日期
  • LEAD(Date, 1):取当前行之后第1行的Date值,若为分组最后一行则返回空值,正好匹配需求

2. Python Pandas 实现(适用本地表格处理场景)

假设原数据已读取为DataFrame对象df,实现代码如下:

import pandas as pd

# 按书籍分组、日期排序后,将下一行的日期赋值给当前行的还书日期字段
df['Gave_Back_Book_Date'] = df.sort_values('Date').groupby('Book')['Date'].shift(-1)
# 重命名原日期字段为取书日期
df = df.rename(columns={'Date': 'Pick_Date'})

3. Excel 实现(适用普通表格文件处理场景)

操作步骤如下:

  • 先将表格按「Book」列升序、「Date」列升序排序
  • 新增Gave_Back_Book_Date列,假设表头在第1行、数据从第2行开始,B列为Book列、C列为原Date列,在第二行对应单元格输入公式:=IF(B2=B3,C3,"")
  • 公式下拉填充所有行即可

内容的提问来源于stack exchange,提问作者NGT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:06:04