【问题标题】:Convert month to string in dataframe column and combine?将月份转换为数据框列中的字符串并合并?
【发布时间】:2020-04-11 14:23:06
【问题描述】:

我有一个包含三列 name,month 的 df。 我想将month 转换为字符串。例如:4 -> Apr 并获取年份的最后两位数。例如 2019 -> 19 并结合两者。例如:Apr20

            name        month   

    0       2020          4     

    1       2019          1     

    2       abc2020abc    3     

    3       abc2019abc    2     

我做了什么: 对于前两行 0,1 得到输出。

            df['month'] = df['month'].astype(int)
            df['month'] = df['month'].apply(lambda x: calendar.month_abbr[x])
            df['year'] = df['number'].str[2:4]
            df['month'] = df['month'] + df['year']
            df = df.drop(['year'],axis=1)

所以0,1 行的输出是

            name           month

    0       2020           Apr20

    1       2019           Jan19

我如何将20abc2020abc 分开

我的结果输出:

                name             month

        0       2020             Apr20

        1       2019             Jan19

        2       abc2020abc       Mar20

        3       abc2019abc       Feb19

【问题讨论】:

    标签: python dataframe datetime


    【解决方案1】:

    试试这个

    import pandas as pd
    import re
    import calendar
    d = {'name': ['2020', '2019', 'abc2018abc', 'abc2017abc'], 'month': [4, 1, 3, 2]}
    df = pd.DataFrame(d)
    df['name'] = df['name'].apply(lambda x: re.sub('[a-zA-z]', '', x))
    df['month'] = [calendar.month_abbr[int(y)] + x[2:] for x, y in zip(df['name'], df['month'])]
    print(df)
    

    输出:

       name  month
    0  2020  Apr20
    1  2019  Jan19
    2  2018  Mar18
    3  2017  Feb17
    

    其他方法

    df['name'] = df['name'].str.replace(r'[a-zA-z]', '')
    df['month'] = df['month'].apply(lambda x: calendar.month_abbr[int(x)]) + df['name'].str[2:]
    

    【讨论】:

      猜你喜欢
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多