【问题标题】:create new column based on other column but stripping基于其他列创建新列但剥离
【发布时间】:2015-05-20 14:49:50
【问题描述】:

我有一个带有 id 列的 pandas DataFrame,如下所示:

id                
A2015        
B2016         
C2017         

我想要两个新列,如下所示:

id         year       name  
A2015      2015       A Q
B2016      2016       B Q
C2017      2017       C Q

因此year 列应采用id 列的最后四个字符,name 列应采用除最后四个字符之外的所有字符并添加Q

如何做到这一点?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以使用字符串方法获得这些。

    通过参与id字符串获取year

    In [60]: df['year'] = df['id'].str[1:]
    

    然后,通过获取id 字符串的最后四个字符并添加' q' 来获得name

    In [61]: df['name'] = df['id'].str[:-4] + ' Q'
    
    In [62]: df
    Out[62]:
          id  year name
    0  A2015  2015  A Q
    1  B2016  2016  B Q
    2  C2017  2017  C Q
    

    【讨论】:

    • 啊,谢谢。我走的是正确的路,但不是通过df['id'].str 访问,而是通过str(df['id']) 进行访问,这是错误的......
    【解决方案2】:
        df['year'] = df['id'].apply(lambda v : v[1:])
        df['name'] = df['id'].apply(lambda v : v[0] + ' Q')
    

    lambda 函数通常更快

    【讨论】:

    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多