【问题标题】:Eval a string representation of tuples in python [duplicate]在python中评估元组的字符串表示[重复]
【发布时间】:2018-05-26 05:50:56
【问题描述】:

我目前有一列字符串值,如下所示:

d = {'col1': '(100,200),(150,124),(135,137)'}

我需要将其更改为浮点值以变为:

d = {'col1': [(100,200),(150,124),(135,137)]}

任何帮助将不胜感激。

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    让我们尝试使用ast.literal_eval。您可以将字符串包裹在大括号中并对其进行安全评估:

    import ast
    d = {k : ast.literal_eval(f'[{v}]') for k, v in d.items()}
    

    pd.DataFrame(d)
    
             col1
    0  (100, 200)
    1  (150, 124)
    2  (135, 137)
    

    【讨论】:

    • df.assign(coordinates=[literal_eval(f'[{v}]') for v in df.coordinates])
    【解决方案2】:

    首先,在字符串周围添加方括号: {'col1': '[(100, 200), (150, 124), (135, 137)]'}

    稍后,eval () 那个字符串。

    d['col1'] = '[' + d['col1'] + ']'
    d['col1'] = eval(d['col1'])
    
    print(d)
    # {'col1': [(100, 200), (150, 124), (135, 137)]}
    
    pd.DataFrame(d)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      相关资源
      最近更新 更多