如何在Pandas DataFrame中按行计算各列元组首元素乘积并新增列R
解决方案
原始代码
import pandas as pd import numpy as np dataset ={ "g1":[(1,2,3), (1,4,5),(6,5,8)], "g2":[(6,5,4),(9,6,4),(5,8,7)], "g3":[(2,5,6),(6,5,8),(5,8,6)] } df = pd.DataFrame(dataset, index=["g1", "g2", "g3"])
实现方法
方法1:逐行处理(直观易懂)
通过apply遍历每行,提取每个元组的第一个元素后计算乘积:
df['R'] = df.apply(lambda row: np.prod([t[0] for t in row]), axis=1) print(df)
方法2:矢量化处理(高效适合大数据集)
先将所有元组的第一个元素提取为数值型DataFrame,再计算每行乘积:
# 提取所有元组的第一个元素 first_vals = df.applymap(lambda x: x[0]) # 计算每行乘积生成R列 df['R'] = first_vals.prod(axis=1) print(df)
输出结果
g1 g2 g3 R g1 (1, 2, 3) (1, 4, 5) (6, 5, 8) 6 g2 (6, 5, 4) (9, 6, 4) (5, 8, 7) 270 g3 (2, 5, 6) (6, 5, 8) (5, 8, 6) 60
内容的提问来源于stack exchange,提问作者bengisu yilmaz
相关产品推荐
相关产品推荐

