我想在数据框的底部创建一行,以计算每列中出现的给定数字(在这种情况下为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
答案 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
,并将sum
,rename
得到的序列和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