将type str(带数字和单词)列转换为int panda



我有一列包含数字和单词的str类型:

前任。

['2','3','Amy','199','Happy']

我想转换所有的";str编号";into,并移除(具有的行(";str words";。

因此,我的预期输出将是如下列表:

[2, 3, 199]

由于我有一个pandas数据帧,并且它应该是其中一列,所以如果它可以是Series,那就更好了,如下所示:

0      2.0
1      3.0
3    199.0
dtype: float64

正如您所提到的,您有一个列(一个系列(,所以假设它被称为s:

s = pd.Series(['2', '3', 'Amy', '199', 'Happy'])

分配后,只需执行pd.to_numeric并放入errors='coerce'的参数。然后,用dropna:移除NaN

print(pd.to_numeric(s, errors='coerce').dropna())

然后上述代码将输出:

0      2.0
1      3.0
3    199.0
dtype: float64

在提供阵列时不使用panda

import re
data = ['2','3','Amy','199','Happy']
for item in data:
print (*re.findall(r'd+',item))

将给出

2
3
199

import re
data = ['2','3','Amy','199','Happy']
out = []
for item in data:
m = str(*re.findall(r'd+',item))
if m != "":
out.append(int(m))
print (out)

将给出

[2, 3, 199]

您可以使用isnumeric来筛选非数字项。

s = pd.Series(['2','3','Amy','199','Happy'])
print(s[s.str.isnumeric()].astype(int))

输出:

0      2
1      3
3    199
dtype: int64

最新更新