Python处理不匹配列:合并多日期列 缺失日期数据补N/A实现方法
实现方案
核心思路
- 把原表中4组独立的「日期-对应数值」字段拆分为4个独立子表,所有子表统一将日期列命名为
DATE - 所有子表按
DATE字段做外连接,自动覆盖所有出现过的日期值 - 对日期列排序后,将缺失值填充为
N/A即可得到预期结果
代码实现
依赖pandas库处理,普通体量(百万行级)数据可直接运行:
import pandas as pd from functools import reduce # 1. 读取原始数据,根据你的文件格式替换读取方法 df = pd.read_csv("你的数据文件路径.csv") # 2. 拆分各日期-数值组为独立子表,统一日期列名 df_group1 = df[["DATE", "Data"]].rename(columns={"DATE": "DATE"}) df_group2 = df[["DATE.2", "Data2"]].rename(columns={"DATE.2": "DATE"}) df_group3 = df[["DATE.3", "Data3"]].rename(columns={"DATE.3": "DATE"}) # 第四组包含Data4、Data5两个数值列 df_group4 = df[["DATE.4", "Data4", "Data5"]].rename(columns={"DATE.4": "DATE"}) # 3. 所有子表按DATE外连接合并 df_list = [df_group1, df_group2, df_group3, df_group4] result = reduce(lambda left, right: pd.merge(left, right, on="DATE", how="outer"), df_list) # 4. 按日期排序,填充缺失值 result["DATE"] = pd.to_datetime(result["DATE"]) result = result.sort_values("DATE").reset_index(drop=True) result = result.fillna("N/A") # 输出结果 print(result.head()) # 可导出为csv:result.to_csv("清洗后结果.csv", index=False)
超大数据量优化
如果你的数据集超过内存承载上限,可以改用dask.dataframe替代pandas,核心合并逻辑完全不变,支持分块读写超大规模数据集,无需修改业务代码。
内容的提问来源于stack exchange,提问作者alec22
相关产品推荐
相关产品推荐

