繁体   English   中英

在某个单词之后提取文本字符串并在 Pandas 中创建一个新列

[英]Extract text strings after certain word and create a new column in Pandas

我有一个df

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

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

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

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

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

尝试使用str.replace

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

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

您可以使用带有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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM