从Pandas DataFrame中的混合DTYPE列中删除仪表板字符串



我有一个带有数值的对象的数据框。

我的目标是将每个值更改为一个简单的整数,但是,其中一些值在数字之间具有-

一个最小的工作示例看起来像:

import pandas as pd
d = {'API':[float(4433), float(3344), 6666, '6-9-11', '8-0-11', 9990]}
df = pd.DataFrame(d)

我尝试:

df['API'] = df['API'].str.replace('-','')

但这让我为数字类型带来了nan,因为它仅搜索整个字符串的框架。

输出为:

API
nan
nan
nan
6911
8011
nan

我想要输出:

API
4433
3344
6666
6911
8011
9990

所有类型均为int

是否有一种简单的方法可以照顾该系列中的对象类型,但是将实际的数值保持态度?我在大型数据集(300,000多行)上使用此技术,因此比环搜索更喜欢lambdaseries operations之类的东西。

regex=True

一起使用df.replace
df = df.replace('-', '', regex=True).astype(int)
    API
0   4433
1   3344
2   6666
3   6911
4   8011
5   9990

也,

df['API'] = df['API'].astype(str).apply(lambda x: x.replace('-', '')).astype(int)

最新更新