[英]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.