我有一个pandas数据帧,如下所示:
colour points
0 red 1
1 yellow 10
2 black -3
然后我尝试执行以下算法:
^{pr2}$我想得到所有的组合和和点数:
示例:
red_yellow = 1 + (-10) = -9
red_black = 1 + ( +3) = 4
black_red = -3 + ( -1) = -4
我目前得到的输出:
colours points
0 red_red 2
1 red_yellow 11
2 red_black -2
3 yellow_red 11
4 yellow_yellow 20
5 yellow_black 7
6 black_red -2
7 black_yellow 7
8 blac_kblack -6
我要寻找的输出:
red_yellow -9
red_black 4
yellow_red 9
yellow_black 13
black_red -4
black_yellow -13
我不知道如何将我的逻辑应用到这段代码中,而且我敢打赌有一种更简单的方法可以在不执行两个循环的情况下获得所有组合,但目前,这是我唯一想到的事情。在
我想:
下面是对几种备选方案的
timeit
比较。在使用
^{pr2}$timeit
生成timeit
结果:alt2
中的主要思想是使用np.add_outer
构造一个加法表 超出df['points']
:ravel
用于使数组一维:使用
pd.MultiIndex.from_product
生成颜色组合:生成一个掩码以删除重复项:
然后从这些部分生成
result
:在我的original answer, here中解释了
alt
背后的思想。在这有点冗长,但可以获得所需的输出:
相关问题 更多 >
编程相关推荐