Я пытаюсь получить процентное изменение между двумя столбцами в кадре данных 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)