我对 python 相当陌生,并且有点陷入一个问题,我正在提取非常混乱的数据。 例如,我的专栏如下所示:
身份证 | 代码 | 描述 |
---|---|---|
ID123 | rdm代码 | 一些自由文本和PL123所需的数据 |
ID124 | 代码 Rdm | 一些文字,此处没有必需的数据,还有更多文字 |
ID125 | 差异... | PL12345 和一些文本,加上此框中的更多文本,以及更多所需数据 PL123456 和 PL1234567 |
我想做的就是将此信息提取到以下格式的新数据框中:
身份证 | 代码 | 摘录 |
---|---|---|
ID123 | 代码 | PL123 |
ID125 | 差异 | PL12345 |
ID125 | 差异 | PL123456 |
ID125 | 差异 | PL1234567 |
我遇到的一个大问题是,我寻找的大多数命令和一些类似的问题是,使用 str.match 或 str.extract 似乎只有在每一行都有这些值之一的情况下才有效,并且该数据集的情况并非如此。
我已经尝试了很多不同的方法,但一直陷于这一切的不同部分,并希望有人能够以此为我指明正确的方向?
谢谢!
我假设代码以
PL...
开头,那么你可以这样做:
df["CODE"] = df["CODE"].str.extract(r"(CODE|DIFF)")
df["EXTRACT"] = df["DESCRIPTION"].str.findall(r"\b(PL\d+)\b")
df = df[["ID", "CODE", "EXTRACT"]].explode("EXTRACT").dropna()
print(df)
打印:
ID CODE EXTRACT
0 ID123 CODE PL123
2 ID125 DIFF PL12345
2 ID125 DIFF PL123456
2 ID125 DIFF PL1234567