【问题标题】:Remove the double quotes from a float in a dataframe从数据框中的浮点数中删除双引号
【发布时间】:2020-06-01 19:43:44
【问题描述】:

我有一些选项链数据:

Contract Name,Last Trade Date,Strike,Last Price,Bid,Ask,Change

AMZN200605P03320000,2020-05-28 3:24PM EDT,3320.0,900.65,876.0,893.5,+900.65

AMZN200605P03500000,2020-05-28 3:51PM EDT,3500.0,1099.55,1055.5,1073.5,"+1,099.55"

条目 - “+1,099.55”似乎是数据中的错误条目,因为没有任何其他类似的记录,我需要在插入 SQLDB 之前对其进行清理。我尝试了几种不同的方法,但都没有奏效。任何见解将不胜感激:

optionsChainPuts['Change'] = optionsChainPuts['Change'].map(lambda x: x.lstrip('\"+').rstrip('\"'))
optionsChainPuts['Change'] = optionsChainPuts['Change'].astype(str).str.replace('\D', '')
optionsChainPuts['Change'] = optionsChainPuts['Change'].astype(str).map(lambda x: x.replace('"', ''))

谢谢

【问题讨论】:

标签: python pandas


【解决方案1】:

这是引起问题的逗号。一种选择是以逗号分隔并加入值

>>> val = "+1,099.55"
>>> val = val.split(",")
>>> num = float(val[0] + val[1])
>>> num
1099.55

希望对您有所帮助!

【讨论】:

    【解决方案2】:

    问题是带有逗号和引号的数字。

    使用locale 将欧洲语言转换为英语

    代码

    from io import StringIO
    import pandas as pd
    import locale
    
    s = '''Contract Name,Last Trade Date,Strike,Last Price,Bid,Ask,Change
    AMZN200605P03320000,2020-05-28 3:24PM EDT,3320.0,900.65,876.0,893.5,+900.65
    AMZN200605P03500000,2020-05-28 3:51PM EDT,3500.0,1099.55,1055.5,1073.5,"+1,099.55"'''
    
    df = pd.read_csv(StringIO(s))
    
    # set local to English
    locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) 
    
    # Convert column to float
    df['Change'] = df['Change'].apply(lambda x: locale.atof(x))
    
    print(df['Change'])
    

    输出

    Name: Change, dtype: object
    0     900.65
    1    1099.55
    Name: Change, dtype: float64
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多