2014-12-21 2 views
1

У меня очень большие панды DataFrame (> 100 миллионов строк и> 1000 столбцов). Каждая строка имеет уникальную метку в качестве индекса, для большинства строк только один столбец содержит значение. Я хочу создать новый DataFrame, удалив эти строки, только один из столбцов имеет значение, и сохранение этих строк с более чем двумя столбцами имеет значения.Удаление строк в кадре данных pandas после оценки всех столбцов

+0

Можете ли вы привести пример данных? – Veedrac

+0

Это звучит как операция, для которой исполнение в памяти с пандами - ужасная идея. Поместите свои данные в базу данных и используйте оптимизированный драйвер базы данных для выполнения операции этого масштаба. Это не то, для чего были созданы панды, и то, на что это хорошо. Не используйте панды в качестве предлога, чтобы избежать обучения или использования надлежащих систем баз данных даже в разовых специальных аналитических задачах. – ely

+0

Можете ли вы предоставить несколько образцов? –

ответ

1

Вы можете оставить их с помощью dropna:

In [3]: 
#sample df 
df = pd.DataFrame({'a':[0,NaN, 2,3,4], 'b':[0,NaN, 2,3,NaN], 'c':arange(5)}) 
df 

Out[3]: 
    a b c 
0 0 0 0 
1 NaN NaN 1 
2 2 2 2 
3 3 3 3 
4 4 NaN 4 
In [5]: 
# drop just the rows which have 2 or more NaN values 
df.dropna(thresh=2, axis=0) 
Out[5]: 
    a b c 
0 0 0 0 
2 2 2 2 
3 3 3 3 
4 4 NaN 4 

Вы пройти Params thresh=2, чтобы указать, что требуется по крайней мере, 2 значения, не NA, и axis=0 определит, что критерии должны быть применены по рядам.

+0

Приятно! Но по некоторым причинам это не сработало. Я использовал df.read_csv, чтобы получить файл, возможно, эти ячейки без значений на самом деле не NaN? – snps

+0

Являются ли они числовыми вообще ?, и в этом случае они могут быть строковыми или у вас есть неверные данные, все, что требуется, - это одно значение в столбце, которое будет строкой, и это сделает столбец смешанным dtype, вы можете попробовать преобразовать first: 'df.convert_objects (convert_numeric = True)' см. [docs] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.convert_objects.html#pandas.DataFrame.convert_objects) , Если это не работает, вам придется выследить ошибочные данные. – EdChum

+0

Извините, забыли упомянуть первый столбец (который я использовал как метку и действительно не нужен индекс) - str. Могу ли я игнорировать это, применяя dropna или использовать этот столбец как ось? взгляните на файл примера по ссылке? https://www.dropbox.com/s/qzuzn0ynn91epcn/Masterdict.csv?dl=0 – snps

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