Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么是浮动';对象没有属性';更换';当我在Pandas中尝试locale.atof时?_Python_Pandas - Fatal编程技术网

Python 什么是浮动';对象没有属性';更换';当我在Pandas中尝试locale.atof时?

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

我正在尝试将Pandas数据帧系列转换为float。我会执行
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)
我得到了爱。“我不知道这有多‘聪明’”这句话让我崩溃了。我们都能理解这个短语我也不知道它有多“聪明”,但它只是帮助了我,起了作用,所以它很聪明。