我正在为每个Match创建一个包含WL的排列,如下所示:
N_Match = 3
data = pd.DataFrame(list(itertools.product("WL", repeat=N_Match)))
由于我使用了N_match = 3,因此数据帧的输出将具有3列: 我想计算所有列中每一行的 W 和 L 。 我将创建一个新列,如下所示: 如果W的数量大于no。 L,我将用于该单元格的公式为1/2 ^(N_Match),否则为0
如何创建该列,如以下示例所示:
在这种情况下,将0.125计算为1/2 ^ N_Match, 在此先感谢您的建议。 问候
Zep
答案 0 :(得分:0)
将numpy.where
与sum
的值由DataFrame.eq
的True
的匹配值的数目计起:
mask = data.eq('W').sum(axis=1) > data.eq('L').sum(axis=1)
data['Prob'] = np.where(mask, 1/2**(N_Match), 0)
print (data)
0 1 2 Prob
0 W W W 0.125
1 W W L 0.125
2 W L W 0.125
3 W L L 0.000
4 L W W 0.125
5 L W L 0.000
6 L L W 0.000
7 L L L 0.000