我有一个这样的数据框。

0                                             1.144921
1                                             1.000000
2                                             1.119507
3                                                  inf
4                                             0.000000
5                                                  inf
6                                             0.000000
7                                             0.000000
8                                             1.000000
9                                             0.000000
10                                            0.000000
11                                            0.000000
12                                            1.793687
13                                                 inf

我正试图摆脱“inf”字符串。基本上,我只想去掉所有字符串,只保留数据框中的数字。
我尝试了下面的代码。
kepler = re.sub("\D", "", kepler)
kepler = re.sub('[^0-9]','0', kepler)

当我运行这两行代码时,我得到以下错误。
TypeError: expected string or bytes-like object

如果我有一个非常简单的字符串,它确实有效。所以,这是可行的。
s = '83jjdmi239450  19dkd'
s = re.sub("\D", "", s)

不幸的是,代码不能在我的数据帧上工作。有什么想法吗?谢谢。

最佳答案

样本数据帧上的numpy.isfinite例程:

In [176]: df
Out[176]:
           a
0   1.000000
1   1.119507
2        inf
3   0.000000
4        inf
5   0.000000
6   0.000000
7   1.000000
8   0.000000
9   0.000000
10  0.000000
11  1.793687
12       inf

In [177]: df = df[~np.isinf(df['a'])]

In [178]: df
Out[178]:
           a
0   1.000000
1   1.119507
3   0.000000
5   0.000000
6   0.000000
7   1.000000
8   0.000000
9   0.000000
10  0.000000
11  1.793687

关于python - 似乎无法从字符串中剥离数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56907065/

10-14 17:35
查看更多