2016-12-07 2 views
1

У меня есть простой dataframe и я вычислить очень простое вычитание так:панды результат dataframe вычитание имеет ряд и DTYPE информацию

p0_cost = cost_df['price1'][cost_df['date']==p0] - \ 
      cost_df['price2'][cost_df['date']==p0] 

Я вычислять различные другие статистические данные в дополнение к p0_cost. Я сохраняю эти статистические данные в структуре dict(), которую затем использую для создания фрейма данных.

Теперь, что происходит, это значение p0_cost выглядит следующим образом:

12 213.151824 dtype: float64 

Фактическое значение 213.151824, но она также сохраняет строку и dtype информацию.

Как я могу получить ценность, а не весь этот другой хлам?

+0

Если вы хотите просто скаляр, то индексировать массив с помощью '. значения [0] ':' cost_df ['price1'] [cost_df ['date'] == p0] .values ​​[0] ' – EdChum

+0

Спасибо. Это отлично работает. Но странно, что вычитание информационных кадров происходит со всей другой информацией. – codingknob

+0

Ну, это зависит от варианта использования, здесь вы заполняете dict, чтобы вы сохраняли результат, который в этом случае является «Серией», это по дизайну. Pandas ожидает, что вы выполните арифметические операции между совместимыми типами, как только вы сохраните возвращаемые типы в контейнере, а затем попытайтесь сделать df, вы столкнетесь с проблемами, потому что df попытается использовать существующий индекс и имена/столбцы в ваших значениях dict – EdChum

ответ

1

Вы создаете Dict со значениями Series, если вы хотите просто скалярное значение, то индексировать в результаты с помощью .values[0]:

p0_cost = (cost_df['price1'][cost_df['date']==p0] - cost_df['price2'][cost_df['date']==p0]).values[0] 
Смежные вопросы