我有一列包含以下数据:
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)