将列值映射至另一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
具体步骤:
- 先把你的主数据集(不管是CSV还是已经在内存里的DataFrame)准备好,确保里面有
ddd和hm这两列; - 读取
daycode.csv作为映射表; - 用
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
相关产品推荐
相关产品推荐

