[英]Adding column by substring from another column in Pandas
我有一个包含一列的数据框,
DF = pd.DataFrame({'files': ["S18-000344PAS", "S18-001850HE1", "S18-00344HE1"]})
我想用 substring 文件添加另一列,最终的 dataframe 应该看起来像
DF = pd.DataFrame({'files': ["S18-000344PAS", "S18-001850HE1", "S18-00344HE1"], 'stain': ["PAS", "HE1", "HE1"]})
我试试
DF["Stain"] = DF.apply(lambda row: row.files[re.search(r'[a-zA-Z]{2,}', row.files).start():], axis=1)
但它回来了
AttributeError: 'NoneType' object has no attribute 'start'
我应该怎么办?
如果要从files
列中提取最后 3 个字符,可以执行以下操作:
DF["stain"] = DF["files"].str[-3:]
print(DF)
印刷:
files stain
0 S18-000344PAS PAS
1 S18-001850HE1 HE1
2 S18-00344HE1 HE1
编辑:使用正则表达式提取stain
:
DF["stain"] = DF["files"].str.extract(r"^(?:.{2,})-\d*(.+)")
print(DF)
这是使用str
访问器的一种方法
DF[["files", "stain"]] = DF["files"].str.extract(pat="(.+\d)(\D.+)")
files stain
0 S18-000344 PAS
1 S18-001850 HE1
2 S18-00344 HE1
如果您需要将提取的变量保留在第一列中,您可以这样做
DF["stain"] = DF["files"].str.extract(pat="(.+\d)(\D.+)")[1]
files stain
0 S18-000344PAS PAS
1 S18-001850HE1 HE1
2 S18-00344HE1 HE1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.