微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Dataframe:如何检查元素的特定列

如何解决Python Dataframe:如何检查元素的特定列

我想检查某个列中的所有元素是否都包含数字 0?

我有一个df=pd.read_table('ad-data')
读取的数据集 由此我感受到了一个带有元素的数据框

[0] [1.] [2] [3] [4] [5] [6] [7] ....1559

[1.]  3   2   3   0   0   0   0

[2]  2   3   2   0   0   0   0

[3]  3   2   2   0   0   0   0

[4]  6   7   3   0   0   0   0

[5]  3   2   1   0   0   0   0

...
3220

我想检查从第 4 列到第 1559 列的数据集是否仅包含 0 或其他值。

enter image description here

解决方法

您可以使用 0 元素检查相等性并使用 all 表示行:

df['all_zeros'] = (df.iloc[:,4:1560] == 0).all(axis=1)

演示它的小示例(基于此处的第 1 到第 3 列):

N = 5
df = pd.DataFrame(np.random.binomial(1,0.4,size=(N,N)))
df['all_zeros'] = (df.iloc[:,1:4] == 0).all(axis=1)
df

输出:

   0  1  2  3  4  all_zeros
0  0  1  1  0  0      False
1  0  0  1  1  1      False
2  0  1  1  0  0      False
3  0  0  0  0  0       True
4  1  0  0  0  0       True

更新:过滤非零值:

df[~df['all_zeros']]

输出:

   0  1  2  3  4  all_zeros
0  0  1  1  0  0      False
1  0  0  1  1  1      False
2  0  1  1  0  0      False

更新 2:仅显示非零值:

pd.melt(
    df_filtered.iloc[:,1:4].reset_index(),id_vars='index',var_name='column'
).query('value != 0').sort_values('index')

输出:

   index column  value
0      0      1      1
3      0      2      1
4      1      2      1
7      1      3      1
2      2      1      1
5      2      2      1
,
df['Check']=df.loc[:,4:].sum(axis=1)
,

这里是检查所有值是否为零的方法:很简单 并且不需要上述答案的高级功能。只有基本的 过滤、if 循环和变量赋值等功能。

first 是检查一列是否只有零的方法和 其次是如何查找所有列是否都为零。它 打印和回答声明。

检查一列是否只有零值的方法:

先制作一个系列:

 has_zero = df[4] == 0
 # has_zero is a series which contains bool values for each row eg. True,False.
 # if there is a zero in a row it result will be "row_number : True"

下一个:

rows_which_have_zero = df[has_zero]
# stores the rows which have zero as a data frame 

下一个:

if len[rows_which_have_zero] == total_number_rows:
    print("contains only zeros")
else: 
    print("contains other numbers than zero")
# substitute total_number_rows for 3220 

上述方法只检查rows_which_have_zero是否等于列中的行数。

查看所有列是否只有零的方法:

它使用上述函数并将其放入一个 if 循环中。

no_of_columns = 1559
value_1 = 1

if value_1 <= 1559
     has_zero = df[value_1] == 0
     rows_which_have_zero = df[has_zero]
     value_1 += 1
     if len[rows_which_have_zero] == 1559 
         no_of_rows_with_only_zero += 1
     else:
         return

检查所有行是否只有零:

   #since it doesn't matter if first 3 columns have zero or not:
   no_of_rows_with_only_zero = no_of_rows_with_only_zero - 3
   if no_of_rows_with_only_zero == 1559:
       print("there are only zero values")
   else:
       print("there are numbers which are not zero")

上面检查 no_of_rows_with_only_zero 是否等于行数(即 1559 减 3,因为只需要检查第 4 - 1559 行)

更新:

  # convert the value_1 to str if the column title is a str instead of int 
  # when updating value_1 by adding: convert it back to int and then back to str 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。