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

如何合并两个存储列表值的pandas Series并保留指定DataFrame索引

问题原因

你之前使用+或add方法报错,是因为pandas的Series算术运算默认按照索引对齐取值,你的df_1和df_2没有公共索引,对齐后匹配到的值全为NaN,自然无法和列表类型执行加法操作。
你需要忽略索引的影响,按位置匹配两个DataFrame的行拼接列表,最终保留df_1的索引即可,以下是可直接运行的实现方案:

实现代码

方案1:直接提取值运算(最高效)

直接提取df_2对应列的数值数组(不携带索引信息),和df_1的列直接相加:

import pandas as pd

# 你的示例数据
df_1 = pd.DataFrame({'publications':[[34499803], [34499125], [34445802, 7092834]]}, index=['0', '4', '2423'])
df_2 = pd.DataFrame({'publications':[[65499803, 56899232], [78999821], [87499234]]}, index=['2234', '543', '345'])

df_sum = df_1.copy()
# 取df_2列的values忽略索引,按位置和df1的列相加
df_sum['publications'] = df_sum['publications'] + df_2['publications'].values

方案2:列表推导式(灵活度高)

通过zip按位置配对两个列的元素,逐行拼接列表,适合需要额外处理每行元素的场景:

df_sum = df_1.copy()
df_sum['publications'] = [pub1 + pub2 for pub1, pub2 in zip(df_1['publications'], df_2['publications'])]

行数不一致适配

如果两个DataFrame行数不同,可以先把df_2的列补全到和df_1长度一致,缺失位置用空列表填充,避免索引错误:

# 补全df2的列长度到和df1一致,缺失值用空列表填充
df2_pubs = df_2['publications'].reindex(range(len(df_1)), fill_value=[]).values
df_sum['publications'] = df_1['publications'] + df2_pubs

执行后得到的df_sum和你要求的输出完全一致,保留了df_1的原始索引,列表元素顺序可以根据需求调整。

内容的提问来源于stack exchange,提问作者G. Macia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:24:03