Из-за $ ваш DataFrame обрабатывает столбцы price и total_amount как строки.
Вы можете преобразовать их в числовые значения, убрав символ '$', а затем вы можете суммировать значения в столбцекак и следовало ожидать.
Если вы хотите отобразить итоговые суммы в DataFrame со знаком $, вы можете использовать стилизацию панд (см. документацию здесь )
from IPython.display import display
item_orders = [{'price':'$20','quantity':'2','order_item':'pizza','total_amount':'$40'},
{'price':'$20','quantity':'1','order_item':'potato fry','total_amount':'$20'}]
available_cart_item = pd.DataFrame(item_orders)
# convert from strings to float values
available_cart_item['quantity'] = available_cart_item['quantity'].astype(int)
available_cart_item['total_amount'] = available_cart_item['total_amount'].str.strip('$').astype(float)
available_cart_item['price'] = available_cart_item['price'].str.strip('$').astype(float)
available_cart_item.loc['Total'] = pd.Series(available_cart_item['total_amount'].sum(), index=['total_amount']) .astype(float)
available_cart_item.fillna('', inplace=True)
# adds the $ through style formatting
formatters={'price': lambda x: '' if type(x)==str else '\u20B9{:.2f}'.format(x),
'total_amount': lambda x: '' if type(x)==str else '\u20B9{:.2f}'.format(x),
'Total': lambda x: '' if type(x)==str else '\u20B9{:.2f}'.format(x)}
display(available_cart_item.style.format(formatters))