在数据框底部创建一行,以计算出现的次数

时间:2019-07-11 12:32:17

标签: python python-3.x pandas dataframe

我想在数据框的底部创建一行,以计算每列中出现的给定数字(在这种情况下为0)的出现次数

df = pd.DataFrame({'Bread':[1,"Nan",3.3, 0],
           'Butter': [2, 3, "Nan", 1],
           'Jam': [0, 0, 0.3, 0.7]})


print (df)
Bread Butter  Jam
0     1      2  0.0
1   Nan      3  0.0
2   3.3    Nan  0.3
3     0      1  0.7

我的预期结果将是(附加“ Occ”行)

print (df)
    Bread Butter  Jam
    0     1      2  0.0
    1   Nan      3  0.0
    2   3.3    Nan  0.3
    3     0      1  0.7
   Occ   1      0    2

2 个答案:

答案 0 :(得分:2)

DataFrame.eq进行比较,以True来计数sum的值,并以setting with enlargement来创建新行:

df.loc['Occ'] = df.eq(0).sum()

print (df)

    Bread Butter  Jam
0       1      2  0.0
1     Nan      3  0.0
2     3.3    Nan  0.3
3       0      1  0.7
Occ     1      0  2.0

详细信息

print (df.eq(0))
   Bread  Butter    Jam
0  False   False   True
1  False   False   True
2  False   False  False
3   True   False  False

print (df.eq(0).sum())
Bread     1
Butter    0
Jam       2
dtype: int64

答案 1 :(得分:1)

您可以使用DataFrame.eq来检查哪些值是0,并将sumrename得到的序列和append当作新行: / p>

df = df.append(df.eq(0).sum(0).rename('Occ'))

     Bread Butter Jam
0       1      2  0.0
1     Nan      3  0.0
2     3.3    Nan  0.3
3       0      1  0.7
Occ     1      0  2.0