通过使用pyhton计算行范围内的元素来创建新列

时间:2019-03-25 07:52:48

标签: python pandas

我正在为每个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

如何创建该列,如以下示例所示:

enter image description here

在这种情况下,将0.125计算为1/2 ^ N_Match, 在此先感谢您的建议。 问候

Zep

1 个答案:

答案 0 :(得分:0)

numpy.wheresum的值由DataFrame.eqTrue的匹配值的数目计起:

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