提取特定单词后的文本字符串,并在文本中创建新列

2024-09-29 01:27:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个df

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

我想创建一个新的列,只在ClassOfYear之后包含文本。i、 e:

     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
     ...

Tags: 字符串text文本编辑dfrandomyearsomething
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

尝试使用str.replace

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

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

相关问题 更多 >