【发布时间】:2020-09-09 16:30:02
【问题描述】:
我想对跨列中每个值的数量求和。这相当于 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()
也很高兴让这段代码更简洁、更高效,但最关心的是让它工作!提前感谢您的帮助!
【问题讨论】:
-
您不需要任何循环,但您现有的数据结构和所需的输出尚不清楚
-
您能否添加一个实际可读的示例数据集以及您的预期输出。