Pandas如何将指定列字符拼接至对应行列表的每个元素前
实现方案
结论
不需要手动逐行遍历DataFrame,使用apply按行处理即可,代码简洁且运行效率远高于自定义for循环。
具体实现代码
import pandas as pd # 构造示例数据 df_1 = pd.DataFrame({'x' : ['a', 'b', 'c'], 'y' : [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]]}) # 核心处理逻辑 df_1['y'] = df_1.apply(lambda row: [f"{row['x']} {num}" for num in row['y']], axis=1)
运行后打印df_1即可得到预期结果:
x y 0 a [a 1, a 2, a 3, a 4] 1 b [b 5, b 6, b 7, b 8] 2 c [c 9, c 10, c 11, c 12]
逻辑说明
apply方法设置axis=1代表按行遍历,每次传入一行完整数据作为row参数- 对每行数据,通过列表推导式遍历当前行
y列的所有数值,直接拼接x列字符串和对应数值即可 - 列表推导式本身性能远高于普通for循环,搭配pandas内置的apply方法,比手写遍历DataFrame的代码效率更高
内容的提问来源于stack exchange,提问作者miquiztli_
相关产品推荐
相关产品推荐

