【发布时间】:2021-10-05 13:43:36
【问题描述】:
给定一个 DataFrame,我想计算每行的零数。如何用 Pandas 计算它?
这就是我目前所做的,这将返回零索引
def is_blank(x):
return x == 0
indexer = train_df.applymap(is_blank)
【问题讨论】:
给定一个 DataFrame,我想计算每行的零数。如何用 Pandas 计算它?
这就是我目前所做的,这将返回零索引
def is_blank(x):
return x == 0
indexer = train_df.applymap(is_blank)
【问题讨论】:
使用布尔比较会产生一个布尔 df,然后我们可以将其转换为 int,True 变为 1,False 变为 0,然后调用 count 并传递参数 axis=1 以逐行计数:
In [56]:
df = pd.DataFrame({'a':[1,0,0,1,3], 'b':[0,0,1,0,1], 'c':[0,0,0,0,0]})
df
Out[56]:
a b c
0 1 0 0
1 0 0 0
2 0 1 0
3 1 0 0
4 3 1 0
In [64]:
(df == 0).astype(int).sum(axis=1)
Out[64]:
0 2
1 3
2 2
3 2
4 1
dtype: int64
分解以上内容:
In [65]:
(df == 0)
Out[65]:
a b c
0 False True True
1 True True True
2 True False True
3 False True True
4 False False True
In [66]:
(df == 0).astype(int)
Out[66]:
a b c
0 0 1 1
1 1 1 1
2 1 0 1
3 0 1 1
4 0 0 1
编辑
正如大卫所指出的,astype 到 int 是不必要的,因为在调用 sum 时,Boolean 类型将向上转换为 int,因此这简化为:
(df == 0).sum(axis=1)
【讨论】:
您可以使用以下 python pandas 函数计算每列的零。 它可以帮助需要计算每列的特定值的人
df.isin([0]).sum(axis=1)
这里的df是数据框,我们要计算的值是0
【讨论】:
这是使用apply() 和value_counts() 的另一种解决方案。
df = pd.DataFrame({'a':[1,0,0,1,3], 'b':[0,0,1,0,1], 'c':[0,0,0,0,0]})
df.apply( lambda s : s.value_counts().get(key=0,default=0), axis=1)
【讨论】: