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

用for循环处理Pandas DataFrame实现多时间区间价格差值计算

实现方案

用字典存储计算结果完全可以满足需求,完整可运行代码如下:

import pandas as pd

# 原始数据定义
data = pd.DataFrame([['2021-11-16','250'],['2021-11-17','225'],['2021-11-18','200'],['2021-11-19','175'],['2021-11-20','150'],['2021-11-21','125']], columns = ['export_date','price'])
curr_price = 100
cutoffs = [2,4,6]
# 数字到英文的映射,用于生成指定格式的表头
num_to_en = {2:'two', 4:'four', 6:'six'}

# 数据预处理,避免后续计算报错
data['export_date'] = pd.to_datetime(data['export_date'])
data['price'] = pd.to_numeric(data['price'])

max_date = data['export_date'].max()
res_dict = {}

for c in cutoffs:
    # 筛选对应时间区间内的数据
    filter_mask = data['export_date'] >= max_date - pd.Timedelta(days=c)
    # 计算区间价格中位数
    period_median = data.loc[filter_mask, 'price'].median()
    # 计算百分比差值并存入字典
    pct_diff = (curr_price - period_median) / period_median
    res_dict[f"{num_to_en[c]}_day"] = round(pct_diff, 1)

# 字典直接转成单行DataFrame
result = pd.DataFrame([res_dict])
print(result)

逻辑说明

  • 字典的key对应最终输出的列名,value存储对应区间的计算结果,转换为DataFrame时天然生成单行结构,符合输出要求
  • 可根据实际需求调整小数保留位数、列名生成规则等参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:45:03