pandas如何将多列列表数据合并为嵌套列表并存入新列
实现方案
你可以通过两种方式实现需求,分别适配不同数据量场景:
方式1:使用apply逐行处理(写法简单,适合中小数据量)
直接使用pandas的apply方法指定axis=1逐行读取三列数据传入自定义函数即可,完整代码示例:
import pandas as pd # 构造你的示例DataFrame df = pd.DataFrame({ "col1": [[1,2,3,4]], "col2": [[1,2,3,4]], "col3": [[1,2,3,4]] }) # 你定义的joiner函数 def joiner(col1,col2,col3): snip = [] snip.append(col1) snip.append(col2) snip.append(col3) return snip # 逐行调用函数生成新列col4 df["col4"] = df.apply(lambda row: joiner(row["col1"], row["col2"], row["col3"]), axis=1) # 更简洁的等价写法:df["col4"] = df.apply(lambda x: joiner(*x), axis=1)
方式2:使用列表推导式(性能更高,适合大数据量)
如果你的DataFrame行数较多,列表推导式的执行效率远高于apply方法,写法如下:
df["col4"] = [joiner(a, b, c) for a, b, c in zip(df["col1"], df["col2"], df["col3"])]
两种写法执行后得到的df都完全符合你给出的预期输出效果。
内容的提问来源于stack exchange,提问作者Matthew D'vertola
相关产品推荐
相关产品推荐

