2016-06-30 8 views
1

У меня есть dataframes называемых historic_price с двумя колонками под названием 'price' и 'item', что я пытаюсь множественные вместе хранения результата в другом dataframe называется dayData, но я получаю исключение:Преобразование столбца dataframe плавать

TypeError: can't multiply sequence by non-int of type 'float' 

колонка 'price' выглядит следующим образом:

  price 
0  5.86500 
1  2.03000 
2  13.55000 
3  639.75450 
4  343.94325 
5  1009.43500 
6  585.60600 
7  2208.72400 
8  807.54800 
9  236.51530 
10  14.34000 

колонка 'item' выглядит следующим образом:

 item 
0  0.0 
1  0.0 
2  0.0 
3  0.0 
4  0.0 
5  0.0 
6  0.0 
7  0.0 
8  0.0 
9  0.0 
10 0.0 

(я знаю, что все значения равны нулю, но даже в этом случае, когда я несколько цена по пункту я Шоуда еще получить результат (0))

типы данных для двух столбцов и <class 'pandas.core.series.Series'>

Я пытаюсь добавить продукт пункта и цены на dayData dataframe следующим образом:

dayData["cash"] = historicPrice["price"] * historicPrice["item"] 

, но я получаю исключение выше.

Я попытался преобразования столбцов плавать:

dayData["cash"] = float(historicPrice["price"]) * float(historicPrice["item"]) 

, но не повезло (я получаю исключение: TypeError: cannot convert the series to <class 'float'>)

Может кто-нибудь, дайте мне знать, что мне нужно сделать, чтобы исправить, пожалуйста?

Большое спасибо

+1

что является результатом 'historPrice.dtypes'? –

+1

вам нужно преобразовать dtypes try 'df = df.astype (float)' first – EdChum

+0

dtype: object, я попробовал historyPower = HistoricalPower.astype (float), но получил исключение: TypeError: не может умножить последовательность на non-int типа «float», когда я затем попытался умножить столбцы вместе – Stacey

ответ

4

Скорее всего, у вас есть строки в одной из столбцов. Попробуйте использовать to_numeric с ошибками, установленными в «coerce»:

df['price'] = pd.to_numeric(df['price'], errors='coerce').fillna(0) 
df['item'] = pd.to_numeric(df['item'], errors='coerce').fillna(0) 

df['cash'] = df['price'] * df['item'] 
Смежные вопросы