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

如何基于列名匹配关联List A的日期与List B的计算值?

嗨,很高兴能帮你搞定这个问题!根据你的描述,核心就是要把List A里的日期字段和List B中对应名称的计算值关联起来对吧?咱们一步步来实现:

第一步:先把两个List转成更易处理的DataFrame

首先,List A里每个元素是带日期索引的Series,List B是单个列的DataFrame列表,先把它们各自合并成完整的DataFrame:

处理List A

把List A合并成带Date列的DataFrame(原来的索引就是Date,我们把它转成列):

# 合并List_A为一个DataFrame,保留原日期索引
list_a_df = pd.concat(List_A, axis=1)
# 将索引转为Date列
list_a_df = list_a_df.reset_index().rename(columns={'index': 'Date'})

处理List B

把List B里的小DataFrame合并成一个完整的宽表:

list_b_df = pd.concat(List_B, axis=1)

第二步:按列名匹配整合数据

因为两个表的列名是一一对应的(只是顺序不同),我们可以直接按列名把List B的数值和List A的Date整合到一起:

# 初始化结果表,先放入Date列
result_df = pd.DataFrame({'Date': list_a_df['Date']})

# 遍历List B的每一列
for col_name in list_b_df.columns:
    if col_name in list_a_df.columns:
        # 将对应列的cusum结果加入结果表
        result_df[col_name] = list_b_df[col_name].values
    else:
        print(f"注意:列名 {col_name} 在List A中找不到匹配项")

小提示:检查数据长度匹配

这里要注意一个关键点:List A的每个Series是去掉了NaN的,而List B的cusum结果是基于original_df中每个page的全部数据生成的。如果两者行数不一致,可能会出现匹配错误。如果List A的NaN是需要保留的(只是计算时忽略),建议生成List A时不要drop NaN,而是保留完整的Date索引,这样就能和List B的行数完美对齐了,修改后的List A生成代码可以更简洁:

# 替代原来的循环,直接生成保留NaN的Series列表(如果需要保留完整日期)
List_A = [df.iloc[:, i] for i in range(len(df.columns))]

这样处理后,result_df里就会包含你需要的Date字段,以及所有和List A列名匹配的List B计算数值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 15:37:46