Python:如何将列中只有数字分量的字符串条目转换为整数? [复制]

Posted

技术标签:

【中文标题】Python:如何将列中只有数字分量的字符串条目转换为整数? [复制]【英文标题】:Python: How to convert string entries with only numeric components in a column to integer? [duplicate] 【发布时间】:2020-05-31 20:18:24 【问题描述】:

我有一个包含字符串类型列的数据框,其中包含字符和数字条目。

下面是一个例子 df:

A        B
101a5    12222
11111    e2edw2
22222    33333
asxaa    0045

我想将字符串中只有数值的条目转换为整数,但将其余部分保留为字符串。

最好的方法是什么?

提前致谢!

【问题讨论】:

因为你在一列中有混合类型,所以无论如何你都会得到object dtype。 【参考方案1】:

您可以使用以下功能:

def func(x):
    try:
        return int(x)
    except ValueError:
        return x

df = df.applymap(func)

print(df.applymap(type))

输出:

               A              B
0  <class 'str'>  <class 'int'>
1  <class 'int'>  <class 'str'>
2  <class 'int'>  <class 'int'>
3  <class 'str'>  <class 'int'>

【讨论】:

【参考方案2】:

只需将数据帧转换为整数并忽略任何可能返回原始字符串的错误。

再简单不过了……

df.astype(int, errors='ignore')

# pandas 1.0.0
>>> df.astype(int, errors='ignore').applymap(type)
               A              B
0  <class 'str'>  <class 'int'>
1  <class 'int'>  <class 'str'>
2  <class 'int'>  <class 'int'>
3  <class 'str'>  <class 'int'>

【讨论】:

谢谢!成功了!

以上是关于Python:如何将列中只有数字分量的字符串条目转换为整数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

强制pandas将列中的(1,2)解释为字符串而不是范围?

Python Pandas:如何将列中的分组列表作为字典返回

Python Pandas:通过重复项将列组合在一起,并在相应列中连接字符串

将列中的大量地址(10000)信息列表转置到 csv 中,然后在 mysql 中上传

Python/Pandas/Datetime:将列中的整个列表转换为日期时间

python Pandas - 将列转换为字符串或数字类型