在多个列中计数零

2024-04-26 10:55:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据帧,它有10列,其中包含0、1或NaN。下面是一个类似于我的示例数据帧。你知道吗

id     col_1 col_2 col_3
'jk3'  1     1     NaN
'kp2'  1     1     1
'po0'  0     1     0
'in6'  NaN   0     1
'ml5'  1     NaN   0
'lj3'  1     0     NaN

我想添加另一列df['correct'],它显示False,如果行中存在0,则显示True。你知道吗

我尝试将系列添加到一起:

df['correct'] = df[df.col_1 + df.col_2 + col_3]

但是NaN变成了一个问题,并且在本应是True的行中显示了NaN

有什么方法可以实现它,使这是输出吗?你知道吗

id     col_1 col_2 col_3 correct
'jk3'  1     1     NaN   True
'kp2'  1     1     1     True
'po0'  0     1     0     False
'in6'  NaN   0     1     False
'ml5'  1     NaN   0     False
'lj3'  1     0     NaN   False

Tags: 数据idfalsetruepandasdfcolnan
2条回答

如果id是列,则使用:

df['correct'] = df.iloc[:, 1:].ne(0).all(axis=1)
#alternative solution
#df['correct'] = ~df.iloc[:, 1:].eq(0).any(axis=1)
print (df)
      id  col_1  col_2  col_3  correct
0  'jk3'    1.0    1.0    NaN     True
1  'kp2'    1.0    1.0    1.0     True
2  'po0'    0.0    1.0    0.0    False
3  'in6'    NaN    0.0    1.0    False
4  'ml5'    1.0    NaN    0.0    False
5  'lj3'    1.0    0.0    NaN    False

详细信息:

First seelct没有First by ^{}的所有列:

print (df.iloc[:, 1:])
   col_1  col_2  col_3
0    1.0    1.0    NaN
1    1.0    1.0    1.0
2    0.0    1.0    0.0
3    NaN    0.0    1.0
4    1.0    NaN    0.0
5    1.0    0.0    NaN

比较方式不等于^{}

print (df.iloc[:, 1:].ne(0))
   col_1  col_2  col_3
0   True   True   True
1   True   True   True
2  False   True  False
3   True  False   True
4   True   True  False
5   True  False   True

每行最后一次检查^{}True

print (df.iloc[:, 1:].ne(0).all(axis=1))
0     True
1     True
2    False
3    False
4    False
5    False
dtype: bool

如果id是索引:

df['correct'] = df.ne(0).all(axis=1)
print (df)
       col_1  col_2  col_3  correct
id                                 
'jk3'    1.0    1.0    NaN     True
'kp2'    1.0    1.0    1.0     True
'po0'    0.0    1.0    0.0    False
'in6'    NaN    0.0    1.0    False
'ml5'    1.0    NaN    0.0    False
'lj3'    1.0    0.0    NaN    False

检查测向计数(),它给出数据帧的非空计数,然后您可以根据需要将其分配给true/false。你知道吗

相关问题 更多 >