在PANDAS中追加计数行

时间:2016-09-18 15:00:04

标签: python pandas sum append conditional-statements

我有一个数据框,其中包含以下列方式构建的分类数据:

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"))

然而,这导致许多额外的行没有意义。非常感谢任何帮助!!

2 个答案:

答案 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,那么它们将给出不同的结果。