我有一个数据框,其中包含以下列方式构建的分类数据:
index A B C D
ind1 0 0 1 2
ind2 1 0 2 0
ind3 2 1 0 0
我想追加一行,它只对"1"
的实例求和。期望的结果如下:
index A B C D
ind1 0 0 1 2
ind2 1 0 2 0
ind3 2 1 0 0
count1 1 1 1 0
我导入了表格,所有字符都是字符串,并尝试了以下内容:
dataframe = dataframe.append(dataframe.applymap(lambda x: str.count(x, "1"))
然而,这导致许多额外的行没有意义。非常感谢任何帮助!!
答案 0 :(得分:2)
你可以对布尔掩码df == 1
求和:
print (df == 1)
A B C D
index
ind1 False False True False
ind2 True False False False
ind3 False True False False
df.loc['count1'] = (df == 1).sum()
print (df)
A B C D
index
ind1 0 0 1 2
ind2 1 0 2 0
ind3 2 1 0 0
count1 1 1 1 0
答案 1 :(得分:0)
不确定是否要对1s
进行求和,或者是否要计算1。这假设dtype
不是object
。如果只是@ jezrael的解决方案,如果您检查'1'
而非1
,则该解决方案将有效。
总结1:
sr = df.where(df == 1, 0).sum()
sr.name = 'count1'
df.append(sr)
要计算1,您可以使用@jezrael
突出显示here的方法在这种情况下,结果是相同的,因为你总结了1,但是如果你想要超过2,那么它们将给出不同的结果。