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

计算单列中单个日期与其他多个日期的天数差值

日期天数差对比实现

输入表格

dateamount
2011-01-0250
2011-01-0340
2011-01-0420
2011-01-0510

实现方案

使用Python的pandas库可快速完成需求,具体步骤:

  1. 将日期列转换为日期类型,便于差值计算
  2. 生成所有日期的笛卡尔积对,排除自身对比的行
  3. 计算两个日期的天数差,格式化输出为带"day/days"的字符串
  4. 整理成目标格式的表格

代码实现

import pandas as pd

# 构造输入数据
data = {
    'date': ['2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'],
    'amount': [50, 40, 20, 10]
}
df = pd.DataFrame(data)

# 转换日期格式
df['date'] = pd.to_datetime(df['date'])

# 生成所有日期对的笛卡尔积
date_pairs = pd.merge(df[['date']], df[['date']], how='cross', suffixes=('', '_compared'))

# 过滤掉日期与自身对比的行
date_pairs = date_pairs[date_pairs['date'] != date_pairs['date_compared']]

# 计算天数差值
date_pairs['diff_days'] = (date_pairs['date_compared'] - date_pairs['date']).dt.days

# 格式化差值字符串
def format_diff(days):
    return f"{days} day" if abs(days) == 1 else f"{days} days"

date_pairs['difference in days'] = date_pairs['diff_days'].apply(format_diff)

# 整理列顺序并重命名
result = date_pairs[['date', 'difference in days', 'date_compared']].rename(columns={'date_compared': 'date compared'})

# 转换日期为字符串格式
result['date'] = result['date'].dt.strftime('%Y-%m-%d')
result['date compared'] = result['date compared'].dt.strftime('%Y-%m-%d')

# 输出结果表格
print(result.to_markdown(index=False))

结果表格

datedifference in daysdate compared
2011-01-021 day2011-01-03
2011-01-022 days2011-01-04
2011-01-023 days2011-01-05
2011-01-03-1 day2011-01-02
2011-01-031 day2011-01-04
2011-01-032 days2011-01-05
2011-01-04-2 days2011-01-02
2011-01-04-1 day2011-01-03
2011-01-041 day2011-01-05

注:示例结果中部分单数天数标注为"days"属于小错误,代码中已按语法规范处理为"day"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:40:17