2014-09-23 2 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

+0

Я взял статистику для всех стран для условия. Будет ли анализировать эти данные. До этого все недостающие данные, если это значение равно 0 для страны за конкретный год, эту конкретную страну, которую я бы хотел отбросить для аналитики. дайте мне знать, если вам нужна дополнительная информация. –

+0

Предположим, что для ряда США, если сумма равна 0 в любой год, i хотел бы бросить США. США не должны присутствовать на выходе. Если для Великобритании все значения не равны 0, то я не буду отбрасывать эту строку. Великобритания будет по-прежнему присутствовать на выходе –

ответ

0

После того, как у вас есть данные загружены вам просто необходимо, чтобы выяснить, какие строки удалить:

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

Тогда:

data[~bad_rows].head(100) 
0

Вы должны использовать метод dropna, чтобы удалить эти значения. Переходя в how='any' в метод в качестве аргумента будет удалить строку, если любой из значений null и how='all' будет только удалить строку, если все из значения null.

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

Edit 1.

Стоит отметить, что вы не можете иметь, чтобы создать копию очищенных данных. (Т.е. cleaned_data = data.dropna(how='any').

Для экономии памяти можно передать в inplace вариант, который будет изменять исходный DataFrame и вернуть None.

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

Здесь количество строк будет опущено. Но мне нужно отбросить строки на основе значения. Предположим, что для ряда США, если сумма равна 0 в любой год, я бы хотел сбросить США. Если для Великобритании все значения не равны 0, то я не буду отбрасывать эту строку. Великобритания будет по-прежнему присутствовать на выходе. –

Смежные вопросы