在python中将列对象转换为整数

时间:2016-12-26 07:39:41

标签: python pandas

我有这个数据集:

training.head()
Out[115]: 
GridID        date      Shift  Accident  
0       1  2010-10-08      Night         0                
1       1  2011-02-16    Morning         0                     
2       1  2014-05-31      Night         0                   
3       1  2011-04-03  Afternoon         0                   
4       1  2013-02-20    Morning         0  

我想在列Shift中替换单词" Morning"," Afternoon"和"夜晚"分别用整数1,2和3来表示。

我试过了:

training['Shift'].str.replace('Morninig','1').astype(int)

但它给了我:

 ValueError: invalid literal for int() with base 10: 'Night'

2 个答案:

答案 0 :(得分:3)

使用Series.replace代替inplace=True,并将字典从旧值传递给新值。另外,请确保使用import pandas as pd df = pd.DataFrame({'a': ['morning', 'afternoon']}) print(df) >> a 0 morning 1 afternoon df['a'].replace({'morning': 1, 'afternoon': 2}, inplace=True) print(df) >> a 0 1 1 2 print(df['a'].dtype) >> int64 或将其重新分配给系列。

RexExp

答案 1 :(得分:1)

试试这个:

df2=pd.Series(data={'Night':3, 'Morning':1, 'Afternoon':2})
df.Shift = df.Shift.map(df2)
df2 = pd.read_clipboard()
df3=pd.Series(data={'Night':3, 'Morning':1, 'Afternoon':2})
df2.Shift = df2.Shift.map(df3)
df2

输出:

enter image description here