亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:如何使用列表檢查csv列中是否沒有值

Python:如何使用列表檢查csv列中是否沒有值

HUH函數 2021-10-12 15:49:35
我有一個 CSV 文件,我想檢查每一行是否在我在列表中指定的不同列中有一個或多個值。如果任何列中都沒有值,它應該加起來為一個計數器,這樣我就知道有多少行是空的。但是如果它在列表的一列中有一個值,它就不應該做任何事情。CSV 文件是這樣的:我做了下面的代碼,但它返回 0,這是不正確的。import pandas as pdtestfile = 'test1.csv'df = pd.read_csv(testfile)column_names = ['Uniprot_acc','Uniprot_id','Interpro_domain','Ensembl_geneid','Ensembl_transcriptid','SIFT_score','SIFT_pred']counter = 0for row in df:    for column_name in column_names:        if column_name in row:            if column_name == None:                counter =+ 1print(counter)我想知道的是有多少行不包含任何內容。如果沒有值,它應該檢查列表中每一列的每一行。如果行中確實沒有任何內容,它應該算數。所以在這個例子中它應該是 3。
查看完整描述

1 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

用:


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和NaNs:


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

通過以下方式檢查每行是否為真DataFrame.all:


print (df[column_names].isnull().all(axis=1))

0     True

1    False

2    False

3    False

4     True

5    False

dtype: bool

并且最后只計數Trues by sum。


查看完整回答
反對 回復 2021-10-12
  • 1 回答
  • 0 關注
  • 455 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號