Python 将列名从string更改为float
我有很多列的dataframe,其中一些是字符串,一些是数字。现在,当我将列名称打印为列表时,我得到如下结果: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语句
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]