繁体   English   中英

通过 substring 从 Pandas 中的另一列添加列

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

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