熊猫系列漂浮

时间:2020-02-22 17:21:07

标签: python string pandas

我有一个熊猫数据框,如下所示:

import pandas as pd
    data = {"col1":["2%", "3%", "4%", "5%"],"col2":["N/A", "N/A", "4%", "5%"]}


    df = pd.DataFrame(data)

如何将这些列转换为浮点数?

我面临的困难是"N/A"

的字符串

我已经尝试过了:

for col_name in df.columns:
   df[col_name]=df[col_name].replace(r'%','',regex=True).astype(float)

但是当我进入第二列时它会失败

有人可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

public abstract class SidebarVersionTemplate { 与字典配合使用,然后将DataFrame.replace转换为float:

DataFrame.astype

答案 1 :(得分:1)

对于您的示例,这应该可以工作。基本上清除%符号,然后将任何看起来不像数字的符号转换为NaN。然后变成浮动是微不足道的。如果要显示其他文本,这种方法更具弹性,但是您仍然需要能够清除文本周围的符号

df = pd.DataFrame(data)

for col_name in df.columns:
    aux_series = df[col_name].fillna('').str.replace('%', '')
    aux_series[-aux_series.str.isnumeric()] = None
    aux_series = aux_series.astype(float, errors='ignore')
    df[col_name] = aux_series