2016-01-27 7 views
0

Я пытаюсь использовать np.where для фильтрации скорости столбца и где выполняется условие, назначить значение в столбце 'C'. По какой-то причине я назначаю все как истинное. Кажется, он отлично работает для этого человека SO question, поэтому я немного в тупике. Любая помощь будет оценена по достоинству.Условное создание столбца Dataframe Pandas

df["C"] = np.where(df.speed > 3, 'true','false')

speed C 
0 3.34 true 
1 0.02 true 
2 0.01 true 
3 8.41 true 
4 0.03 true 
+1

Работает для меня, как ожидалось. Вы не показываете код, связанный с самим созданием dataframe, но это, вероятно, ошибка. Сделайте самодостаточный пример, который показывает проблему. – Evert

+0

К сожалению, должен был убедиться, что скорость указана как «объект», а не 'int'. Я знал, что это что-то глупое. – hselbie

ответ

1

Ваши переменные скорости не являются целыми числами, поэтому этот тест не удается. Возможно, это объекты. Если фреймворк правильно инициализирован целыми числами, это работает так, как ожидалось.

Например, я могу получить вывод, который у вас есть, если я сделаю все типы данных столбца скорости в строки.

0

Для тех, кто сталкивается с этим, мудрый комментатора наверху предложил мне посмотреть, как был создан dataframe, так что я посмотрел на dtypes и нашел

id      int64 
speed     object 
C      object 

Этот код исправляет проблему:

df['speed'] = df['speed'].astype(float) 
Смежные вопросы