【发布时间】:2020-11-12 14:55:45
【问题描述】:
编辑:又更新了一部分问题
我有一个熊猫数据框“数据”,如下所示:
col1
-----
sample data1(xyz)
sample data2(xyz123)
sample data3
sample data4
我想根据上面的列创建一个新列,其中包含左括号“(”之前的文本。 但是,如果该行不包含括号,则应该获取原始文本。
我有以下基于 str.extract 函数的代码:
data["NewCol"] =data["col1"].str.extract("(.*?)\(")
当前结果(如果未找到模式,则输入 NaN。):
NewCol
-----
sample data1
sample data2
NaN
NaN
预期结果(如果没有找到模式,应该放原文):
NewCol
-----
sample data1
sample data2
sample data3
sample data4
我怎样才能得到预期的结果?必须有一种方法可以在一个命令中完成它,它的 python!在这里需要一些帮助!
注意:实际上并不需要使用提取功能。如果其他一些功能可以解决问题,那对我来说很好。
编辑: 第 2 部分
对于同一个数据集,如果我想对括号之间的文本执行类似的操作怎么办?
我的代码:
data["NewCol"] =data["col1"].str.extract("\((.*?)\)")
当前结果(如果未找到模式,则输入 NaN。):
NewCol
-----
xyz
xyz123
NaN
NaN
预期结果(如果没有找到模式,应该放原文):
NewCol
-----
xyz
xyz123
sample data3
sample data4
正则表达式可以解决这个问题吗?
【问题讨论】:
-
随着更新,您想问什么变得越来越不清楚。请尝试在每个帖子中使用一个问题,如果您必须进行大量修改,请提出一个新问题。
标签: python regex pandas dataframe