[英]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.