Python 跨数据帧的特定列向量化求和
我想通过使用矢量化优化熊猫数据帧中某些列的总和。 具体而言,我有以下数据框:Python 跨数据帧的特定列向量化求和,python,pandas,sum,vectorization,Python,Pandas,Sum,Vectorization,我想通过使用矢量化优化熊猫数据帧中某些列的总和。 具体而言,我有以下数据框: df = pd.DataFrame(index = [1, 3, 2], data = {'Low':[1, 1, 1], 'Mid':[2, 2, 6], 'High':[3, 3, 3]}) 我已经创建了一个新的列,它包含前N列的总和,其中N是索引值: df['new_col'] = [df.iloc[i,:df.index[i]].sum() for i in range(df.shape[0])] 最后的数
df = pd.DataFrame(index = [1, 3, 2], data = {'Low':[1, 1, 1], 'Mid':[2, 2, 6], 'High':[3, 3, 3]})
我已经创建了一个新的列,它包含前N列的总和,其中N是索引值:
df['new_col'] = [df.iloc[i,:df.index[i]].sum() for i in range(df.shape[0])]
最后的数据帧如下所示:
Low Mid High new_col
1 1 2 3 1
3 1 2 3 6
2 1 6 3 7
显然,这必须矢量化。我真的很感激任何能让我避免for循环的提示。
谢谢 尝试广播索引并与列号进行比较:
df['new_col'] = df.where(df.index.values[:,None] > np.arange(df.shape[1]), 0).sum(1)
输出:
Low Mid High new_col
1 1 2 3 1
3 1 2 3 6
2 1 6 3 7
这是个好主意!谢谢@Quang Hoang。然而,我相信它应该是np.arange(df.shape[1])+1?