python - Python:如何使用列表检查 csv 列中是否没有值
问题描述
我有一个 CSV 文件,我想检查每一行是否在我在列表中指定的不同列中有一个或多个值。如果任何列中没有值,它应该加到一个计数器中,这样我就知道有多少行是空的。但是,如果它在列表中的一列中有一个值,则它不应该做任何事情。
CSV 文件是这样的:
我编写了下面的代码,但它返回 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。
解决方案
利用:
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 E
0 a NaN NaN NaN 5.0
1 b 5.0 8.0 3.0 3.0
2 c 4.0 9.0 NaN NaN
3 d 5.0 4.0 7.0 9.0
4 e NaN NaN NaN NaN
5 f 4.0 NaN 0.0 4.0
counter = df[column_names].isnull().all(axis=1).sum()
print (counter)
2
说明:
首先按列表过滤列:
print (df[column_names])
Uniprot_acc Uniprot_id Interpro_domain
0 NaN NaN NaN
1 5.0 8.0 3.0
2 4.0 9.0 NaN
3 5.0 4.0 7.0
4 NaN NaN NaN
5 4.0 NaN 0.0
然后检查缺失值None
和NaN
s:
print (df[column_names].isnull())
Uniprot_acc Uniprot_id Interpro_domain
0 True True True
1 False False False
2 False False True
3 False False False
4 True True True
5 False True False
通过以下方式检查每行是否所有 True DataFrame.all
:
print (df[column_names].isnull().all(axis=1))
0 True
1 False
2 False
3 False
4 True
5 False
dtype: bool
最后计数仅True
s by sum
。
推荐阅读
- appgallery - 当我上传包时,一直出现错误:“上传失败”
- python - Django 无法加载带有静态文件的简单静态页面
- react-native - React Native Firebase 推送通知
- asp.net-core - 如何为 ResponseCacheAttribute 动态设置 Duration
- laravel-blade - 将表单选择的数据传递给 laravel7 中的控制器,返回 null
- codeigniter-4 - Codeigniter 4 检测并区分主页与其他页面
- python - Pandas 中的 Str.contain 用于所有值 NaN 的列
- c++ - 在 C++ 标准模板库 (STL) 中使用 set
- javascript - 元素出元素在JS中
- android - PackageInstaller 完成(自我)更新后启动应用程序