【问题标题】:Change columns names from string to float将列名从字符串更改为浮点数
【发布时间】:2020-09-01 05:44:10
【问题描述】:

我有很多列的数据框,其中一些是字符串,一些是数字。现在,当我将列名打印为列表时,我得到如下信息:

df.columns.tolist()
>>>['name','code','date','401.2','405.6','507.3'...]

我想将数字列作为浮点数而不是字符串,我还没有找到任何方法来做到这一点,可以做这样的事情吗? 我最终的目标是能够只创建数字列名称的列表,所以如果你知道其他方式来分隔它们,当它们是字符串时也可以工作。

【问题讨论】:

    标签: python pandas string dtype


    【解决方案1】:

    try-except 语句中使用自定义函数:

    df = pd.DataFrame(columns=['name','code','date','401.2','405.6','507.3'])
    
    def f(x):
        try:
            return float(x)
        except:
            return x
    
    df.columns = df.columns.map(f)
     
    print (df.columns.tolist())
    ['name', 'code', 'date', 401.2, 405.6, 507.3]
    

    【讨论】:

      【解决方案2】:

      使用列表推导

      df.columns = [float(col) if col.replace('.', '').isnumeric() else col for col in df.columns]
      res = df.columns.to_list()
      print(res)
      

      输出:

      ['name', 'code', 'date', 401.2, 405.6, 507.3]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-31
        • 1970-01-01
        • 2018-01-11
        • 1970-01-01
        • 2016-03-31
        • 2020-02-08
        相关资源
        最近更新 更多