如何在日期列变化时获取另一列的下一个对应值
实现DataFrame添加下一个日期的Value列
针对你提供的DataFrame需求,可通过以下步骤实现:
步骤说明
- 确保日期列是datetime类型,保证排序和偏移逻辑的准确性
- 提取每个日期对应的唯一Value值(同一日期的Value值一致)
- 对去重后的日期序列做偏移处理,获取每个日期对应的下一个日期的Value
- 将映射关系匹配回原DataFrame的每一行
代码实现
import pandas as pd # 构造示例DataFrame data = { 'Date': ['2023-01-01', '2023-01-01', '2023-02-01', '2023-03-01', '2023-04-01', '2023-04-01', '2023-05-01'], 'Value': [1000, 1000, 1002, 1004, 1006, 1006, 1009] } df = pd.DataFrame(data) # 1. 转换日期列为datetime类型 df['Date'] = pd.to_datetime(df['Date']) # 2. 生成日期到下一个日期Value的映射 date_unique = df.drop_duplicates(subset='Date').sort_values('Date') date_unique['Desired Output'] = date_unique['Value'].shift(-1) date_value_map = date_unique.set_index('Date')['Desired Output'].to_dict() # 3. 映射到原DataFrame df['Desired Output'] = df['Date'].map(date_value_map) print(df)
输出结果
Date Value Desired Output 0 2023-01-01 1000 1002.0 1 2023-01-01 1000 1002.0 2 2023-02-01 1002 1004.0 3 2023-03-01 1004 1006.0 4 2023-04-01 1006 1009.0 5 2023-04-01 1006 1009.0 6 2023-05-01 1009 NaN
内容的提问来源于stack exchange,提问作者boioboi
相关产品推荐
相关产品推荐

