将对象转换为int(Python熊猫)



我有一列包含以下数据:

df['Exp'] = ['10+ years', '8 years', '6 years', '7 years', '5 years','1 year', '< 1 year', '4 years', '3 years', '2 years', '9 years']

我需要将此列转换为int格式。

我该怎么做?

谢谢!

import pandas as pd
df = pd.DataFrame({'Exp': ['10+ years', '8 years', '6 years', '7 years', '5 years','1 year', '< 1 year', '4 years', '3 years', '2 years', '9 years']})    
df['Exp'] = df['Exp'].replace('D','', regex=True).astype(int)

输出

Exp
0   10
1   8
2   6
3   7
4   5
5   1
6   1
7   4
8   3
9   2
10  9

这应该可以做到:

df.Exp.str.extract('(d{1,})').astype(int)

为了清楚起见,d获取任何数字字符串,{1,}确保至少有一个。

编辑:(很抱歉没有正确阅读问题(要转换它,你可以做:

df['Exp'] = df.Exp.str.extract('(d{1,})').astype(int)

假设你想用负一填充空行,那么你可以这样做:

df['Exp'] = df.Exp.str.extract('(d{1,})').fillna(-1).astype(int)

最新更新