Столбцы фрейма данных не будут преобразованы в тип данных с плавающей запятой в python - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь получить процентное изменение между двумя столбцами в кадре данных pandas, который был построен из базы данных sqlite, однако, когда я пытаюсь выполнить вычисления, я не могу, потому что столбцы не относятся к типу float. Я пробовал большинство способов их преобразования, например .astype, to_numeric. Я также пытался обернуть его в float(), но, похоже, ничего из этого не работает, данные остаются как тип объекта, и я могу выполнять любые вычисления на нем.

conn = sqlite3.Connection("PriceData.db")
c = conn.cursor()
c.execute('SELECT productId, edition, lowPrice, midPrice, highPrice, date FROM PriceData WHERE date = "2020-07-30"')
data = c.fetchall()
columns = ['productId','edition', 'lowPrice','midPrice', 'highPrice', 'date']
dfPrev = pd.DataFrame(data, columns=columns, dtype = str)
conn = sqlite3.Connection("PriceData.db")
c = conn.cursor()
c.execute('SELECT productId, edition, lowPrice, midPrice, highPrice, date FROM PriceData WHERE date = "2020-07-31"')
data2 = c.fetchall()
dfToday = pd.DataFrame(data2, columns=columns, dtype = str)

result = pd.merge(dfPrev,dfToday, on = ['productId', 'edition'])

result['lowPercentChange'] = result[['lowPrice_x', 'lowPrice_y']].apply(lambda x :percentChange(result['lowPrice_x'], result['lowPrice_y']), axis = 1)
print(result)

print(result.dtypes)

1 Ответ

0 голосов
/ 05 августа 2020

проверьте Тип данных 2. и кажется, что вы передаете str как аргумент dtype в pd.Dataframe, вы пытались изменить его на float? Пожалуйста, позвольте мне точно увидеть изображение и ваш результат, возможно, я неправильно понимаю.

...