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

Python DataFrame时间列问题:同组货币对时间一致后逐组递增1小时

问题解决方案

核心问题分析

你当前的代码存在两个关键问题:

  1. 仅创建了3行数据,没有生成3×3的9组完整货币对组合
  2. 循环逐行递增时间,无法实现「每3行共用同一时间,组间时间递加1小时」的需求

修正代码

import pandas as pd
import datetime
from datetime import timedelta

# 生成3×3的全量货币对组合(笛卡尔积)
from_curr = ["EUR", "GBP", "USD"]
to_curr = ["INR", "SGD", "HKD"]
data = pd.DataFrame([(f, t) for f in from_curr for t in to_curr], columns=["From", "To"])

# 生成符合要求的时间序列:3个间隔1小时的时间点,每个时间点重复3次
init_date = datetime.datetime(1, 1, 1)
# 先创建3个递增的时间点
time_points = [init_date + timedelta(hours=i) for i in range(3)]
# 每个时间点重复3次,对应每组3行货币对
data["time"] = [str(t)[11:19] for t in time_points for _ in range(3)]

print(data)

代码说明

  1. 生成全量货币对:用列表推导式实现From和To的笛卡尔积,直接得到9行完整组合
  2. 批量设置时间:
    • 先创建3个间隔1小时的基础时间点
    • 将每个时间点重复3次,确保每3行共用同一时间,下一组时间自动递加1小时
  3. 时间格式化:通过str(t)[11:19]提取时分秒部分,和你原代码的格式保持一致

输出示例

From   To      time
0   EUR  INR  00:00:00
1   EUR  SGD  00:00:00
2   EUR  HKD  00:00:00
3   GBP  INR  01:00:00
4   GBP  SGD  01:00:00
5   GBP  HKD  01:00:00
6   USD  INR  02:00:00
7   USD  SGD  02:00:00
8   USD  HKD  02:00:00

如果需要调整分组逻辑(比如按To字段分组设置时间),只需修改时间序列的生成逻辑:将[str(t)[11:19] for t in time_points for _ in range(3)]改为[str(t)[11:19] for _ in range(3) for t in time_points]即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:31:15