Python:如何使用列表检查csv列中是否没有值

我有一个 CSV 文件,我想检查每一行是否在我在列表中指定的不同列中有一个或多个值。如果任何列中都没有值,它应该加起来为一个计数器,这样我就知道有多少行是空的。但是如果它在列表的一列中有一个值,它就不应该做任何事情。

CSV 文件是这样的:

http://img.mukewang.com/61653e2d0001a02307190274.jpg

我做了下面的代码,但它返回 0,这是不正确的。


import pandas as pd


testfile = 'test1.csv'


df = pd.read_csv(testfile)


column_names = ['Uniprot_acc',

'Uniprot_id',

'Interpro_domain',

'Ensembl_geneid',

'Ensembl_transcriptid',

'SIFT_score',

'SIFT_pred']


counter = 0


for row in df:

    for column_name in column_names:

        if column_name in row:

            if column_name == None:

                counter =+ 1


print(counter)

我想知道的是有多少行不包含任何内容。如果没有值,它应该检查列表中每一列的每一行。如果行中确实没有任何内容,它应该算数。所以在这个例子中它应该是 3。


HUH函数
浏览 444回答 1
1回答

繁星coding

用:counter = df[column_names].isnull().all(axis=1).sum()print (counter)样品:df = pd.DataFrame({         'A':list('abcdef'),         'Uniprot_acc':[np.nan,5,4,5,np.nan,4],         'Uniprot_id':[np.nan,8,9,4,np.nan,np.nan],         'Interpro_domain':[np.nan,3,np.nan,7,np.nan,0],         'E':[5,3,np.nan,9,np.nan,4],})column_names = ['Uniprot_acc',                'Uniprot_id',                'Interpro_domain']print (df)   A  Uniprot_acc  Uniprot_id  Interpro_domain    E0  a          NaN         NaN              NaN  5.01  b          5.0         8.0              3.0  3.02  c          4.0         9.0              NaN  NaN3  d          5.0         4.0              7.0  9.04  e          NaN         NaN              NaN  NaN5  f          4.0         NaN              0.0  4.0counter = df[column_names].isnull().all(axis=1).sum()print (counter)2说明:首先按列表过滤列:print (df[column_names])   Uniprot_acc  Uniprot_id  Interpro_domain0          NaN         NaN              NaN1          5.0         8.0              3.02          4.0         9.0              NaN3          5.0         4.0              7.04          NaN         NaN              NaN5          4.0         NaN              0.0然后检查缺失值None和NaNs:print (df[column_names].isnull())   Uniprot_acc  Uniprot_id  Interpro_domain0         True        True             True1        False       False            False2        False       False             True3        False       False            False4         True        True             True5        False        True            False通过以下方式检查每行是否为真DataFrame.all:print (df[column_names].isnull().all(axis=1))0     True1    False2    False3    False4     True5    Falsedtype: bool并且最后只计数Trues by sum。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python