gpt4 book ai didi

python、pandas、处理不良数据

转载 作者:行者123 更新时间:2023-12-01 03:37:40 25 4
gpt4 key购买 nike

所以我有一个非常大的数据框,大部分是 float (从csv读取),但时不时地,我得到一个字符串,或nan

                         date load
0 2016-07-12 19:04:31.604999 0
...
10 2016-07-12 19:04:31.634999 nan
...
50 2016-07-12 19:04:31.664999 ".942.197"
...

我可以处理 nans(插值),但不知道如何使用替换来捕获字符串,而不是数字

df.replace(to_replace='^[a-zA-Z0-9_.-]*$',regex=True,value = float('nan'))

返回所有 nan。我不想仅当它实际上是一个字符串时才使用 nan

最佳答案

我想你想要pandas.to_numeric。它适用于类似系列的数据。

In [1]: import pandas as pd

In [2]: df = pd.DataFrame([0, float('nan'), '.942.197'], columns=['load'])

In [3]: df
Out[3]:
load
0 0
1 NaN
2 .942.197

In [4]: pd.to_numeric(df['load'], errors='coerce')
Out[4]:
0 0.0
1 NaN
2 NaN
Name: load, dtype: float64

实际上 to_numeric 会尝试将每个项目转换为数字,因此如果您有一个看起来像数字的字符串,它将被转换:

In [5]: df = pd.DataFrame([0, float('nan'), '123.456'], columns=['load'])

In [6]: df
Out[6]:
load
0 0
1 NaN
2 123.456

In [7]: pd.to_numeric(df['load'], errors='coerce')
Out[7]:
0 0.000
1 NaN
2 123.456
Name: load, dtype: float64

除了迭代(或者可能使用applymap)之外,我不知道有什么方法可以将每个非数字类型转换为nan >) 并检查 isinstance

关于python、pandas、处理不良数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40156600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com