我的熊猫有一个数据框,想从中进行一些计算。
我认为这更像是交叉路口的问题
颜色1 = [0,1,2,0] 第2列= [0,0,1,0]
以上是我的数据框,我想计算一列中至少有一个0的行数。 例如,我希望输出为3,因为三行中至少有0。
答案 0 :(得分:1)
由于0
是Falsey值,所以只需使用all
(~df.all(1)).sum()
3
答案 1 :(得分:0)
我知道这可以一行完成,但是下面的示例是明确的。
创建数据框
df = pd.DataFrame([[0,0],[1,0],[2,1],[0,0]], columns=("Col1","Col2"))
df
看起来
Col1 Col2
0 0 0
1 1 0
2 2 1
3 0 0
一个简单的蒙版将显示与过滤器匹配的“单元格”
m = df == 0
m
看起来
Col1 Col2
0 True True
1 False True
2 False False
3 True True
使用.any
应该显示序列或列等中的任何内容是否与“ any”的布尔逻辑匹配。我们要求它使用axis = 1,以便它按行而不是按列(axis = 0)
rows = m.any(axis = 1)
mrows
看起来
0 True
1 True
2 False
3 True
dtype: bool
然后,您可以对它们进行求和,因为布尔真值有点像1。
mrows.sum() # >>> 3
但要明确...将True设置为1,将False设置为0
mrows = mrows[mrows] = 1
mrows.sum()