Skip to main content
 首页 » 编程设计

python之从 pandas Dataframe 中的混合 dtype 列中删除破折号字符串

2025年05月04日30artech

我有一个数据框,其中可能的对象与数值混合在一起。

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

一个最小的工作示例如下:

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 行)上使用这种技术,所以像 lambda 或 series operations 这样的方法比循环搜索更受欢迎。

请您参考如下方法:

使用df.replace使用 regex=True

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