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

将列值映射至另一CSV数据及5位日期时间编码处理求助

解决方案:把ddd+hm格式的日期时间数据映射到daycode.csv

看起来你需要把那种由ddd(2009年元旦起的天数,范围1-730)和hm(30分钟间隔时段,范围1-48)组成的5位日期时间标识,关联到daycode.csv里的对应编码信息对吧?我给你整理了两种常见场景的具体实现方案,用Python的pandas库处理这类CSV映射问题最顺手:


场景1:daycode.csv里直接存了ddd+hm对应的完整daycode

如果你的daycode.csv是每行对应一组ddd和hm,并且已经给出了对应的完整daycode(比如结构像下面这样):

ddd,hm,daycode
1,1,DC09010100
1,2,DC090101030
...
730,48,DC1012312330

具体步骤:

  1. 先把你的主数据集(不管是CSV还是已经在内存里的DataFrame)准备好,确保里面有ddd和hm这两列;
  2. 读取daycode.csv作为映射表;
  3. 用merge方法把两个数据集按ddd和hm做关联匹配:
import pandas as pd

# 读取你的主数据文件(替换成你的实际文件名)
your_data = pd.read_csv("your_data.csv")

# 读取daycode映射表
daycode_map = pd.read_csv("daycode.csv")

# 关联匹配,用left join保证主数据的所有行都保留,匹配不到的会显示NaN
merged_data = pd.merge(your_data, daycode_map, on=["ddd", "hm"], how="left")

# 把结果存成新的CSV文件
merged_data.to_csv("mapped_data.csv", index=False)

场景2:daycode.csv分开存日期编码和时间编码

如果daycode.csv是把ddd对应的日期部分编码和hm对应的时间部分编码分开存储的(比如同一个文件里有ddd、date_code、hm、time_code这些列),那我们需要先分别关联,再把两个编码拼接成完整的daycode:

具体步骤:

import pandas as pd

# 读取主数据
your_data = pd.read_csv("your_data.csv")

# 读取daycode.csv,拆分出日期映射和时间映射(去重避免重复匹配)
daycode_df = pd.read_csv("daycode.csv")
date_map = daycode_df[["ddd", "date_code"]].drop_duplicates()
time_map = daycode_df[["hm", "time_code"]].drop_duplicates()

# 先关联日期编码
data_with_date = pd.merge(your_data, date_map, on="ddd", how="left")
# 再关联时间编码
final_data = pd.merge(data_with_date, time_map, on="hm", how="left")

# 把日期编码和时间编码拼接成完整的daycode
final_data["daycode"] = final_data["date_code"] + final_data["time_code"]

# 保存最终结果
final_data.to_csv("mapped_data.csv", index=False)

几个实用小提示

  • 一定要确保你的主数据和daycode.csv里的ddd、hm字段数据类型一致(比如都是整数),不然可能会出现匹配不上的情况;
  • 如果你的主数据里是把ddd和hm合并成一个5位的字段(比如101表示ddd=1,hm=1),可以先拆分它:
    # 假设这个合并字段叫daycode_raw,前3位是ddd,后2位是hm
    your_data["ddd"] = your_data["daycode_raw"].str[:3].astype(int)
    your_data["hm"] = your_data["daycode_raw"].str[-2:].astype(int)
    
  • 要是你想验证ddd对应的实际日期对不对,可以用pandas转成真实日期来核对:
    # ddd=1对应2009-01-01,所以要减1天
    your_data["actual_date"] = pd.to_datetime("2009-01-01") + pd.to_timedelta(your_data["ddd"] - 1, unit="D")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:32:59