当前位置: 首页 > 面试题库 >

将百分比字符串转换为浮点数在pandas中read_csv

桑璞
2023-03-14
问题内容

在熊猫中使用read_csv时,是否可以将“ 34%”之类的值直接转换为int或float?我希望将其直接读取为0.34。

在read_csv中使用它不起作用:

read_csv(..., dtype={'col':np.float})

在将csv加载为’df’之后,这也无法正常工作,并显示错误“ float()的无效文字:34%”

df['col'] = df['col'].astype(float)

我最终使用了这个可行但长期困扰的东西:

df['col'] = df['col'].apply(lambda x: np.nan if x in ['-'] else x[:-1]).astype(float)/100

问题答案:

您可以定义一个自定义函数以将百分比转换为浮点数

In [149]:
# dummy data
temp1 = """index col 
113 34%
122 50%
123 32%
301 12%"""
# custom function taken from https://stackoverflow.com/questions/12432663/what-is-a-clean-way-to-convert-a-string-percent-to-a-float
def p2f(x):
    return float(x.strip('%'))/100
# pass to convertes param as a dict
df = pd.read_csv(io.StringIO(temp1), sep='\s+',index_col=[0], converters={'col':p2f})
df
Out[149]:
        col
index      
113    0.34
122    0.50
123    0.32
301    0.12
In [150]:
# check that dtypes really are floats
df.dtypes
Out[150]:
col    float64
dtype: object

我对浮点数的百分比是ashwini的回答:将字符串百分比转换为浮点数的一种干净方法是什么?



 类似资料:
  • 如何将字符串百分比转换为浮点小数?我写了这段代码,当我运行它时,我只会返回一些错误,如“无法将系列转换为”

  • 问题内容: 正如标题所说。我不认为有可能这样做,但如果可以告诉我。 这是我正在编写的bukkit(minecraft服务器)插件所必需的。我要执行一个命令:tnt [power]。电源是我想转换为浮点数的返回字符串。 谢谢 问题答案: 用于进行转换。 和之间的区别只是回报。如果需要(对象),请使用前者;如果要数字,请使用后者。

  • 问题内容: http://golang.org/pkg/strconv/ http://play.golang.org/p/4VNRgW8WoB 如何将浮点数转换为字符串格式?这是google游乐场,但未获得预期的输出。(2e + 07)我想得到“ 21312421.213123” 请帮助我从浮点数中获取字符串。谢谢 问题答案: 试试这个 如果只想获得尽可能高的位数精度,则特殊精度-1使用所需的最

  • 问题内容: 我在标准库上进行了查找,但未发现类似问题。因此,有没有一种方法可以在不滚动我自己的函数的情况下进行以下操作?如果没有内置的方法,那么如果有人编写了精美的函数,奖励积分就可以了。 问题答案: 将用作:

  • 问题内容: 我有一个表,其中包含纬度和经度值,这些值存储为要转换为的字符串()。 但是,使用或似乎没有一种直接的方法。 如何轻松转换这些列?这是一次转换。 问题答案: 原来我只是在描述上不见了: 将值转换为DECIMAL数据类型。可选参数M和D指定十进制值的精度(M指定位数的总数)和小数位数(D指定小数点后的位数)。默认精度是小数点后两位。 因此,以下查询有效:

  • 问题内容: 指定直方图聚合时,是否可以将字符串转换为浮点数?因为我的文档中的字段是浮点型的,但没有通过Elasticsearch解析,因此当我尝试使用字符串字段求和时,它将引发下一个错误。 我知道我可以更改映射,但是对于我有的用例,如果在编写字段的聚合时可以指定类似“ script:_value.tofloat()”的内容,则将更加方便。 这是我的代码: } 问题答案: 你需要这个 对于称为的字段