Python 什么是浮动';对象没有属性';更换';当我在Pandas中尝试locale.atof时?
我正在尝试将Pandas数据帧系列转换为float。我会执行Python 什么是浮动';对象没有属性';更换';当我在Pandas中尝试locale.atof时?,python,pandas,Python,Pandas,我正在尝试将Pandas数据帧系列转换为float。我会执行locale.setlocale(locale.LC\u NUMERIC'),然后执行df.idh.apply(locale.atof),但它会给出上面提到的错误:AttributeError:'float'对象没有属性“replace”。我假设在某个点上,它得到了一个像NaN的东西,或者其他字符串,但它不识别它。我如何告诉apply跳过这些呢?我不知道这有多“聪明”,但我是这样“修复”的,至少目前是这样: df.idh = df.id
locale.setlocale(locale.LC\u NUMERIC'),
然后执行df.idh.apply(locale.atof)
,但它会给出上面提到的错误:AttributeError:'float'对象没有属性“replace”
。我假设在某个点上,它得到了一个像NaN的东西,或者其他字符串,但它不识别它。我如何告诉apply
跳过这些呢?我不知道这有多“聪明”,但我是这样“修复”的,至少目前是这样:
df.idh = df.idh.astype(str).apply(locale.atof)
请告诉我这个问题的明智答案。问题与空值有关。替换不能在numpy null上工作。您的解决方案不会返回错误,因为您将np.NaN(null)转换为“NaN”,而replace可以处理字符串“NaN”。问题是,现在列中有'nan'而不是np.nan。因此,如果你跑步:
df[df.idh.isnull()]
它将返回0行,即使数据中有空值。以下代码在该列上运行replace语句时保留np.NaN
def replace_percent(x):
try:
return x.replace('%', '')
except AttributeError:
return np.NaN
df_not.secularism = df_not.secularism.map(replace_percent)
这个替代方案对你有效吗
csv_nn = df.replace(np.nan, 'null', regex=True)
我得到了爱。“我不知道这有多‘聪明’”这句话让我崩溃了。我们都能理解这个短语我也不知道它有多“聪明”,但它只是帮助了我,起了作用,所以它很聪明。