如何将DataFrame的两列数值合并为元组列?
在Pandas DataFrame中创建元组列的几种方法
嘿,这个需求其实挺常见的,我给你分享几个简单易行的方法,直接就能用~
首先假设我们有这样一个示例DataFrame:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
方法1:用zip函数(最推荐,效率最高)
这是我平时用得最多的方法,因为它是向量化操作,比逐行循环快很多,代码也极简:
df['tuple_col'] = list(zip(df['A'], df['B']))
原理是zip会把两列的对应元素一一配对,再转成列表赋值给新列就行。
方法2:用apply配合lambda函数
如果你需要更灵活的自定义逻辑(比如对值做处理后再打包),可以用apply:
df['tuple_col'] = df.apply(lambda row: (row['A'], row['B']), axis=1)
这里axis=1表示按行处理,lambda函数把每行的A、B值打包成元组。不过要注意,当数据量很大时,apply的效率不如zip哦。
方法3:用agg聚合函数
如果要处理多列(比如3列及以上),用agg会更简洁:
df['tuple_col'] = df[['A', 'B']].agg(tuple, axis=1)
直接指定聚合函数为tuple,按行把选中的列值打包成元组。
处理后的结果
执行任意一种方法后,你的DataFrame会变成这样:
A B tuple_col 0 1 4 (1, 4) 1 2 5 (2, 5) 2 3 6 (3, 6)
小提醒:如果你的列里有缺失值(NaN),打包后的元组会保留NaN,比如某行A是NaN,那元组就是(NaN, 5),这是正常的行为哦~
内容的提问来源于stack exchange,提问作者Thibault Mambour
相关产品推荐
相关产品推荐

