【发布时间】:2021-01-30 20:38:15
【问题描述】:
数据框df 中的Month 列包含数字和单词。我想使用replace 将所有单词转换为数字。我无法弄清楚下面的代码出了什么问题。任何人都可以帮忙吗?谢谢!
>>>df['Month'].unique()
array(['03', '6', '7', '9', '2', '5', '10', '3', '4', '8', '1', '07', '06', '11', '12', '08', '02', '09', '01', '04', 'April', 'May', 'Feb', 'February', 'October', 'Jan', 'July', 'December', 'September', 'Mar', 'August', 'Sep', 'Nov', 'June', 'Dec', 'Oct', 'January', 'Jun', 'Aug', 'Jul', 'Apr', 1], dtype=object)
>>>m = {'January':1, 'February': 2, 'March': 3, 'April': 4, 'May': 5, 'June': 6, 'July': 7, 'August': 8,
'September': 9, 'October': 10, 'November': 11, 'December': 12,
'Jan':1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'Jun': 6, 'Jul': 7, 'Aug': 8,
'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
>>>df['Month'] = df['Month'].str.replace('(^[A-Z][a-z]+)', lambda x:m[str(x.groups()[0])])
>>>df['Month'].unique()
array(['03', '6', '7', '9', '2', '5', '10', '3', '4', '8', '1', '07', '06', '11', '12', '08', '02', '09', '01', '04', nan], dtype=object)
【问题讨论】:
-
以上也应该有效。有人知道吗?
-
您也可以使用 map 函数进行系列,使用您提供的字典,该函数会将值映射到键 pandas.pydata.org/pandas-docs/stable/reference/api/…