繁体   English   中英

将类型 str(带有数字和单词)列转换为 int pandas

[英]Convert type str (with number and words) column into int pandas

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

前任。

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

我想将所有“str number”转换为 int 并删除(带有)“str words”的行。

所以我预期的 output 将是如下列表:

[2, 3, 199]

由于我有一个 pandas dataframe,这应该是其中的一列,如果它可以是如下的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())

那么上面的代码将output:

0      2.0
1      3.0
3    199.0
dtype: float64

在提供阵列时不使用 pandas

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))

Output:

0      2
1      3
3    199
dtype: int64

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM