2016-11-02 2 views
-1

У меня есть DataFrame с некоторыми строковыми значениями, которые я преобразовываю в целое, для будущих вычислений. Значения из столбца df['Age'] имеют некоторые ошибки, которые обозначены как NaN. С помощью функции dropna я теряю половину целых строк и много данных, которые находятся в других столбцах. Как я могу выбрать для дальнейших вычислений только значения от df['Age'], которые не являются значениями NaN без изменения основного DataFrame.Удаление значений только из столбца pandas

df['Age'] = np.where(pd.to_numeric(df['Age'], 'coerce').notnull(), df['Age'], NaN) 
df = df.dropna(subset=['Age']) 
df['Age'] = df['Age'].astype(int) 
+3

Можете ли вы предоставить образец вашей dataframe –

+0

Как именно вы хотите пренебрежимо малых для обработки? – BallpointBen

+0

Вы пробовали: '.dropna()'? ... Я не понял, что вам жаль! – tumbleweed

ответ

0

Чтобы выбрать строки с возрастом не равно нулю:

df[df.Age.notnull()] 

Или, возможно, вы хотите только возраст:

df[[df.Age.notnull()].Age 
+0

Спасибо, второй дает желаемый результат – Sinchetru

0

После конвертированы df['Age'] в цифровой, использовать другие переменный с нарезкой.

, например, предполагая, что у вас есть income поле:

another_df = df['income'][~ps.isnull(df['age'])] * 2 

или, более общо:

another_df = df['income'][~ps.isnull(df['age'])].apply(lambda x: x*2) 

и вы можете использовать любую функцию в apply вызова

Примечание: ваш исходный dataframe df не изменился

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