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

Pandas拼接列表时PyCharm出现FutureWarning的问题

解决pandas中df.sum(axis=1)拼接行内列表的FutureWarning问题

警告原因

在pandas 1.5.0版本中,df.sum(axis=1)用于拼接行内的字符串列表属于非预期用法:sum方法的设计初衷是对数值类型进行求和运算,而非处理列表这类非数值类型的聚合。官方已明确会在未来版本中限制sum的适用场景,仅保留数值类型的求和功能,因此抛出FutureWarning提示开发者该操作后续可能失效或行为变更。

解决办法

以下几种替代方法可实现相同的行内列表拼接功能,且不会触发警告:

方法1:使用apply逐行处理

通过apply传入匿名函数,逐行拼接所有列的列表:

result = df.apply(lambda row: sum(row, []), axis=1)

这里sum(row, [])的作用是将行内的多个列表依次合并到空列表中,与原df.sum(axis=1)的效果完全一致。

方法2:使用agg指定聚合逻辑

与apply逻辑类似,通过agg方法实现行级聚合:

result = df.agg(lambda row: sum(row, []), axis=1)

方法3:列表推导式(小数据场景适用)

对于数据量较小的情况,可结合iterrows使用列表推导式:

import pandas as pd
result = pd.Series([sum(row, []) for _, row in df.iterrows()])

注意:iterrows的遍历效率较低,不推荐用于大型DataFrame。

验证示例

假设你的DataFrame生成代码如下:

import pandas as pd

data = {
    'col1': [['a', 'b'], ['c'], [], ['d', 'e'], ['f']],
    'col2': [['x'], ['y', 'z'], ['m'], [], ['n']],
    'col3': [['p', 'q'], [], ['r', 's'], ['t'], []]
}
df = pd.DataFrame(data)

使用上述任一方法,都会得到与原df.sum(axis=1)完全相同的结果:

0    [a, b, x, p, q]
1          [c, y, z]
2          [m, r, s]
3          [d, e, t]
4             [f, n]
dtype: object

内容的提问来源于stack exchange,提问作者FluidMechanics Potential Flows

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:15:38