2014-09-23 146 views
0

我正在執行.csv文件上的數據清理以執行分析。我想刪除在python的列中有空值的行。基於python列中的值刪除行

示例文件:

Unnamed: 0 2012 2011 2010 2009 2008 2005 
0 United States of America 760739 752423 781844 812514 843683 862220 
1 Brazil 732913 717185 715702 651879 649996 NaN 
2 Germany  520005 513458 515853 519010 518499 494329 
3 United Kingdom (England and Wales) 310544 336997 367055 399869 419273 541455 
4 Mexico 211921 212141 230687 244623 250932 239166 
5 France 193081 192263 192906 193405 187937 148651 
6 Sweden 87052 89457 87854 86281 84566 72645 
7 Romania  17219 12299 12301 9072 9457 8898 
8 Nigeria  15388 NaN  18093 14075 14692 NaN 

到目前爲止使用的是:

from pandas import read_csv 
link = "https://docs.google.com/spreadsheets......csv" 
data = read_csv(link) 
data.head(100000) 

如何刪除這些行?

+1

你能解釋正是你正在嘗試做的? – JustinJDavies 2014-09-23 09:01:13

+0

我已經採取統計爲所有的國家提供一個條件,將對這些數據進行分析,在此之前,所有缺少的數據,如果某個特定年份的國家/地區的價值爲0,那麼我希望放棄分析的特定國家/地區。讓我知道如果你需要更多的信息 – 2014-09-23 09:19:29

+0

假設對於一排美國,如果在一年中的任何一年的金額爲0,我想要放棄美國。美國不應該出現在產出中。如果對於英國,所有的值不是0,那麼我不會放棄那一行。英國將仍然在輸出 – 2014-09-23 09:23:14

回答

0

一旦你有你的數據加載,你只需要找出要刪除的行:

bad_rows = np.any(np.isnan(data), axis=1) 

然後:

data[~bad_rows].head(100) 
0

您需要使用dropna方法來刪除這些值。傳遞how='any'入方法作爲參數將刪除行如果的值的任何nullhow='all'只會移除如果值的所有null的行。

cleaned_data = data.dropna(how='any') 

編輯1.

值得一提的,你可能不希望有創建清理數據的副本。 (即cleaned_data = data.dropna(how='any')

爲了節省內存,你可以在inplace選項,將修改原來的DataFrame並返回None通過。

data.dropna(how='any', inplace=True) 
data.head(100) 
+0

這裏的行數將被丟棄。但我需要根據該值刪除行。假設對於美國的一排,如果一年中的任何一年的金額爲0,我想放棄美國。如果對於英國,所有的值不是0,那麼我不會放棄那一行。英國將仍然在那裏輸出。 – 2014-09-23 09:22:01