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

基于时间序列data_time值的列值迁移实现方案咨询

需求说明

初始数据

我们有如下初始DataFrame:

Date_timeUniverse_Location_1Universe_Location_2Universe_Location_3Universe_Location_4
20.06.2023 11:00Saturnmarsearth

天体移动规则

  • Saturn每30分钟从一个位置移动到下一个位置
  • Mars每45分钟从一个位置移动到下一个位置
  • Earth每60分钟从一个位置移动到下一个位置

输入输出示例

示例输入1:20.06.2023 11:30

对应的结果DataFrame:

Date_timeUniverse_Location_1Universe_Location_2Universe_Location_3Universe_Location_4
20.06.2023 11:30Saturnmarsearth

示例输入2:20.06.2023 11:45

对应的结果DataFrame:

Date_timeUniverse_Location_1Universe_Location_2Universe_Location_3Universe_Location_4
20.06.2023 11:45Saturnmars earth

示例输入3:20.06.2023 12:00

对应的结果DataFrame:

Date_timeUniverse_Location_1Universe_Location_2Universe_Location_3Universe_Location_4
20.06.2023 12:00EarthSaturnmars

技术实现建议

步骤1:计算时间差

将初始时间和目标时间转换为datetime对象,算出两者的总分钟数差值,记为total_minutes。

步骤2:统计天体移动次数

根据各天体的移动周期,计算移动次数:

  • Saturn移动次数:saturn_moves = total_minutes // 30
  • Mars移动次数:mars_moves = total_minutes // 45
  • Earth移动次数:earth_moves = total_minutes // 60

步骤3:明确位置循环规则

天体在4个位置(Universe_Location_1至4)按位置1→2→3→4→1的顺序循环移动:

  • 初始位置:Saturn在位置1,Mars在位置3,Earth在位置4
  • 若多个天体移动到同一位置,用空格拼接名称(如示例2中Mars和Earth同处位置4,显示为"mars earth")

步骤4:实现位置计算逻辑

对每个天体,按以下步骤计算目标位置:

  1. 将位置映射为索引(位置1=0,位置2=1,位置3=2,位置4=3)
  2. 目标索引 = (初始索引 + 移动次数) % 4
  3. 将索引转回对应的位置列名

步骤5:构建结果DataFrame

  1. 初始化结果行,所有位置列先设为空字符串
  2. 把每个天体的名称填入计算出的目标位置列:若目标位置已有内容,追加空格和天体名称
  3. 填入目标时间,生成最终的DataFrame

代码实现示例(Python)

import pandas as pd
from datetime import datetime

# 初始数据
initial_data = {
    "Date_time": ["20.06.2023 11:00"],
    "Universe_Location_1": ["Saturn"],
    "Universe_Location_2": [""],
    "Universe_Location_3": ["mars"],
    "Universe_Location_4": ["earth"]
}
initial_df = pd.DataFrame(initial_data)

# 天体初始位置(列名→索引映射)
planet_initial_pos = {
    "Saturn": 0,
    "mars": 2,
    "earth": 3
}
# 索引→列名映射
pos_to_col = {
    0: "Universe_Location_1",
    1: "Universe_Location_2",
    2: "Universe_Location_3",
    3: "Universe_Location_4"
}
# 天体移动周期(分钟)
planet_cycles = {
    "Saturn": 30,
    "mars": 45,
    "earth": 60
}

def generate_result(target_time_str):
    # 时间格式转换
    time_format = "%d.%m.%Y %H:%M"
    initial_time = datetime.strptime(initial_df["Date_time"].iloc[0], time_format)
    target_time = datetime.strptime(target_time_str, time_format)
    total_minutes = int((target_time - initial_time).total_seconds() // 60)
    
    # 初始化结果行
    result_row = {
        "Date_time": target_time_str,
        "Universe_Location_1": "",
        "Universe_Location_2": "",
        "Universe_Location_3": "",
        "Universe_Location_4": ""
    }
    
    # 计算每个天体的目标位置并填充
    for planet, initial_idx in planet_initial_pos.items():
        cycle = planet_cycles[planet]
        move_count = total_minutes // cycle
        target_idx = (initial_idx + move_count) % 4
        target_col = pos_to_col[target_idx]
        
        if result_row[target_col]:
            result_row[target_col] += f" {planet}"
        else:
            result_row[target_col] = planet
    
    return pd.DataFrame([result_row])

# 测试示例
print(generate_result("20.06.2023 11:30"))
print(generate_result("20.06.2023 11:45"))
print(generate_result("20.06.2023 12:00"))

内容的提问来源于stack exchange,提问作者Vivek kanna Jayaprakash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:04:57