Pandas从货币改为浮动时的舍入不一致

5t7ly7z5  于 2023-02-17  发布在  其他
关注(0)|答案(2)|浏览(101)

我正在尝试更改列(price),它是groupby中使用的对象数据类型。将此列更改为float有时会保持与原始列相同的小数位数,有时会舍入到一个小数位,有时完全去掉所有的小数位。我想保持浮点值与原来的相同,由于最终的和解,需要准确到小数位。我尝试过使用astye和www.example.com _numeric更改列类型pd.to。理想情况下,price_3和price_4应为93927.82。如有任何帮助,我将不胜感激。

import pandas as pd

d = {'product': ['apples', 'pears', 'grapes', 'oranges'], 
     'price': ['$93,927.83' , '$9,868.23', '$110,838.10', '$10,093.88']}

df = pd.DataFrame(data=d)

df['price_2'] = df['price'].str.replace('$', '').str.replace(',', '').str.replace('(', '').str.replace(')', '')
df['price_3'] = df['price_2'].astype(float)
df['price_4'] = pd.to_numeric(df['price_2'])

0md85ypi

0md85ypi1#

您可能需要设置显示精度:

import pandas
pandas.set_option('display.precision', 2)

df = pandas.DataFrame({
    'product': ['apples', 'pears', 'grapes', 'oranges'], 
    'price': ['$93,927.83' , '$9,868.23', '$110,838.10', '$10,093.88']
})
df['price_2'] = df['price'].str.replace('$', '').str.replace(',', '').str.replace('(', '').str.replace(')', '')
df['price_3'] = df['price_2'].astype(float)
df['price_4'] = pandas.to_numeric(df['price_2'])

print(df['price_4'])

为您提供:

0     93927.83
1      9868.23
2    110838.10
3     10093.88
hof1towb

hof1towb2#

尝试将df['price_3'] = df['price_2'].astype(float)更改为df['price_3'] = df['price_2'].apply(Decimal)

相关问题