我有一个熊猫数据框,如下所示:
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)
但是当我进入第二列时它会失败
有人可以解决这个问题吗?
答案 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