【问题标题】:Convertin string of list to list of floats [pandas]将列表字符串转换为浮点列表 [pandas]
【发布时间】:2016-02-09 09:17:32
【问题描述】:

在 pandas 中导入时,数据如下所示:

>>> BOM.PriceQty['substrate']
'[200.0, 300.0, 500.0]'

如何将其转换为浮动列表? 试过 convert_objact:

>>> BOM.PriceQty['substrate'].convert_object(convert_numeric=True)

Traceback(最近一次调用最后一次):文件“”,第 1 行,in AttributeError:“str”对象没有属性 'convert_object'

谢谢!

【问题讨论】:

  • 它已经看起来像一个浮动列表,type(BOM.PriceQty['substrate'][0]) 显示什么?
  • 它看起来像是一个代表列表的字符串,在这种情况下你必须评估字符串:eval(BOM.PriceQty['substrate'])
  • 这是一个看起来像浮点数列表的字符串。快速而肮脏的解决方案是将字符串传递给eval。但是,it may not be a good idea to do that.
  • type(BOM.PriceQty['substrate'][0]) 显示

标签: python-3.x pandas


【解决方案1】:

这可以很好地将表示浮点数列表的字符串转换为实际的浮点数列表:

s = '[200.0, 300.0, 500.0]'
l = [float(x.strip(' []')) for x in s.split(',')]

strip 函数会删除因拆分而产生的任何 ' ''['']' 字符。

结果:

In [1]: l
Out[1]: [200.0, 300.0, 500.0]

如果您想将此转换应用于整个列,请将apply 作为lambda 函数:

BOM.PriceQty.apply(lambda s: [float(x.strip(' []')) for x in s.split(',')])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-31
    • 2017-09-26
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    相关资源
    最近更新 更多