【问题标题】:replace all month in words to digits in a column of a data frame将单词中的所有月份替换为数据框列中的数字
【发布时间】: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)

【问题讨论】:

标签: python pandas python-re


【解决方案1】:

我想出了一个不使用正则表达式的更简单的方法:

df.replace({'Month': m})

【讨论】:

    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多