pandas使用assign新增DataFrame列如何实现对应列表元素逐元素翻倍
问题原因
你原有写法无法得到预期结果,是因为a列存储的是Python列表对象,直接将整列转为numpy数组后会是object类型,乘法运算不会遍历每个子列表内的元素做数值计算,最终返回结构不符合要求。
修正实现
首先构造示例DataFrame:
import pandas as pd import numpy as np df = pd.DataFrame({'a': [[5.4, 15.3],[2.0,9.1]],'b':[[9.8,2.0],[9.7,6.0,1.2]]})
你可以任选以下两种写法,通过assign生成符合要求的c列:
- 列表推导写法:执行效率更高,适配大数据量场景
df_result = df.assign(c=[[val * 2 for val in sub_list] for sub_list in df['a']]) - 序列映射写法:逻辑更直观,代码可读性更强
df_result = df.assign(c=df['a'].map(lambda lst: [v*2 for v in lst]))
运行结果
执行上述代码后打印df_result,即可得到你期望的输出:
a b c 0 [5.4, 15.3] [9.8, 2.0] [10.8, 30.6] 1 [2.0, 9.1] [9.7, 6.0, 1.2] [4.0, 18.2]
内容的提问来源于stack exchange,提问作者currently_into_ai
相关产品推荐
相关产品推荐

