【问题标题】:Extract text strings after certain word and create a new column in Pandas在某个单词之后提取文本字符串并在 Pandas 中创建一个新列
【发布时间】:2020-10-22 04:38:31
【问题描述】:

我有一个df

     ClassOfYear
0    ClassOfYear 2019 something
1    x ClassOfYear 2012 random text 
2    Amy ClassOfYear 2004
3    David Beckham ClassOfYear 1994
     ...

我想创建一个新列,其中仅包含ClassOfYear 之后的文本(包括ClassOfYear)。即:

     ClassOfYear
0    ClassOfYear 2019 something
1    ClassOfYear 2012 random text 
2    ClassOfYear 2004
3    ClassOfYear 1994
     ...

编辑: 通常每个字符串都有一个年份,我们可以用年份创建另一个列吗? 预期输出:

     ClassOfYear                    Year
0    ClassOfYear 2019 something     2019
1    ClassOfYear 2012 random text   2012
2    ClassOfYear 2004               2004
3    ClassOfYear 1994               1994
     ...

【问题讨论】:

标签: python pandas string numpy


【解决方案1】:

尝试使用str.replace

df["NewCol"]= df["ClassOfYear"].str.replace("^.*(?=ClassOfYear)", "")

这种方法是匹配从列开始到但不包括文本ClassOfYear 的所有内容。然后,我们用空字符串替换以删除此文本。请注意,此替换不会影响根本没有文本 ClassOfYear 的列值。

【讨论】:

    【解决方案2】:

    您可以使用带有assign 的简单正则表达式,或者只是广播您的专栏。

    .* 是一种贪婪的方法来匹配 ClassOfYear 之后直到字符串结尾的所有内容(行终止符除外)

    df = df.assign(newCol=df['ClassOfYear'].str.extract('(ClassOfYear.*)'))
    
    print(df)
    
                              ClassOfYear                         newCol
    0          ClassOfYear 2019 something     ClassOfYear 2019 something
    1     x ClassOfYear 2012 random text   ClassOfYear 2012 random text 
    2                Amy ClassOfYear 2004               ClassOfYear 2004
    3      David Beckham ClassOfYear 1994               ClassOfYear 1994
    

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 1970-01-01
      • 2023-01-21
      • 2015-04-10
      • 2021-10-14
      • 1970-01-01
      • 2016-12-21
      • 2017-11-02
      • 1970-01-01
      相关资源
      最近更新 更多