我有以下多索引DataFrame:
m dist
a a 2 5
b 3 8
c 4 12
d 2 3
b a 2 5
b 3 8
c 4 14
d 2 27
我想基于算法计算新列。例如,对于(a,a),算法将是:
选择具有相同级别0索引的所有其他行: - > (a,a),(a,b),(a,c),(a,d)
从此选择:选择dist< = own dist的行 - > (a,a)和(a,d)
获取此选择的列m的总和 - > 2 + 2 = 4
这会产生以下数据帧:
m dist s
a a 2 5 4
b 3 8 7
c 4 12 11
d 2 3 2
b a 2 5 2
b 3 8 5
c 4 14 9
d 2 27 11
通过遍历行,为每一行创建一个新的数据帧,选择具有正确dist的行并执行groupby,这将很容易。但是使用我当前的数据集,这太慢了。这可以通过一些不错的groupby / lambda魔法完成吗?