我想对跨列中每个值的数量进行求和。这相当于 Excel 中的 COUNTIF。但是,我希望将值填充到列中,而不是单独的 groupby 语句中。
因此,如果第 1 行有 5 列,其值如下:1, 1, 3, 1, 5
那么Rating_1 = 3、Rating_2=0、Rating_3=1、Rating_4= 0、Rating_5 = 1 或 (3, 0, 1, 0, 1)
我正在使用以下代码,并且无法获取要在循环中添加的布尔值(我所有的研究表明它们应该加起来很好!)。
现在,我得到以下(二进制)输出:1, 0, 1, 0, 1(实际上应该是 3, 0, 1, 0, 1)
df = pd.DataFrame(np.random.randint(0,5,size=(5, 5)), columns=list('ABCDE'))
for val in range(1,6):
df['Rating_' + str(val)] = 0
for val in range(1,6):
for row in range(0, df.shape[0]):
df['Rating_' + str(val)][row] = ((df['A'][row] == val) + (df['B'][row] == val) + (df['C'][row] == val) + (df['D'][row] == val) + (df['E'][row] == val)).sum()
我也很高兴让这段代码变得更干净、更高效,但最关心的是让它工作!提前感谢您的帮助!
泛舟湖上清波郎朗
当年话下
相关分类