我有这个数据集:
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'
答案 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)