2024-04-28 05:50:25 发布
网友
我正在尝试将Pandas数据帧序列转换为float。我会locale.setlocale(locale.LC_NUMERIC, '')然后df.idh.apply(locale.atof),但它给了我上述的错误:AttributeError: 'float' object has no attribute 'replace'。我想在某个点上,它得到了一个像NaN,或者其他的字符串,但它没有识别出来。我该如何告诉apply跳过这些?
locale.setlocale(locale.LC_NUMERIC, '')
df.idh.apply(locale.atof)
AttributeError: 'float' object has no attribute 'replace'
apply
这个替代方案对你有用吗?
csv_nn = df.replace(np.nan, 'null', regex=True)
这个问题与空值有关。Replace不能处理numpy空值。您的解决方案不会返回错误,因为您将np.NaN(nulls)转换为“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)
嗯,我不知道这有多“聪明”,但我是这样“修理”的,至少目前是这样的:
df.idh = df.idh.astype(str).apply(locale.atof)
拜托,一定要让我知道这个聪明的答案。
这个替代方案对你有用吗?
这个问题与空值有关。Replace不能处理numpy空值。您的解决方案不会返回错误,因为您将np.NaN(nulls)转换为“NaN”,而replace可以处理字符串“NaN”。但问题是你的专栏里现在有了“nan”,而不是np.nan。所以如果你跑:
即使数据中有空值,它也将返回0行。以下代码在对该列运行replace语句时保留np.NaN。
嗯,我不知道这有多“聪明”,但我是这样“修理”的,至少目前是这样的:
拜托,一定要让我知道这个聪明的答案。
相关问题 更多 >
编程相关推荐