我有一个数据帧,可能的对象与数值混合在一起。
我的目标是将每个值都变成一个简单的整数,然而,其中一些值在数字之间有-。
一个最小的工作示例如下所示:
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。
有没有一种简单的方法,可以只处理Series中的对象类型,而不考虑实际的数字?我在大型数据集(300,000+行)上使用这种技术,因此lambda或series operations之类的东西比循环搜索更可取。
发布于 2019-03-22 01:41:49
在regex=True中使用df.replace
df = df.replace('-', '', regex=True).astype(int)
API
0 4433
1 3344
2 6666
3 6911
4 8011
5 9990发布于 2019-03-22 02:13:14
另外,
df['API'] = df['API'].astype(str).apply(lambda x: x.replace('-', '')).astype(int)https://stackoverflow.com/questions/55286281
复制相似问题