Python 将列名从string更改为float

Python 将列名从string更改为float,python,pandas,string,dtype,Python,Pandas,String,Dtype,我有很多列的dataframe,其中一些是字符串,一些是数字。现在,当我将列名称打印为列表时,我得到如下结果: df.columns.tolist() >>>['name','code','date','401.2','405.6','507.3'...] 我想把数字列作为浮点数,而不是字符串,我还没有找到任何方法,可以这样做吗? 最后,我的目标是能够只创建数字列名称的列表,因此,如果您知道现在使用字符串分隔它们的其他方法,也可以使用。使用自定义函数和try except语句

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

df.columns.tolist()
>>>['name','code','date','401.2','405.6','507.3'...]
我想把数字列作为浮点数,而不是字符串,我还没有找到任何方法,可以这样做吗?
最后,我的目标是能够只创建数字列名称的列表,因此,如果您知道现在使用字符串分隔它们的其他方法,也可以使用。

使用自定义函数和
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]

使用列表理解

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]