基于多个条件和未知数提取数据以解决数据清理问题

问题描述 投票:0回答:1

我对 python 相当陌生,并且有点陷入一个问题,我正在提取非常混乱的数据。 例如,我的专栏如下所示:

身份证 代码 描述
ID123 rdm代码 一些自由文本和PL123所需的数据
ID124 代码 Rdm 一些文字,此处没有必需的数据,还有更多文字
ID125 差异... PL12345 和一些文本,加上此框中的更多文本,以及更多所需数据 PL123456 和 PL1234567

我想做的就是将此信息提取到以下格式的新数据框中:

身份证 代码 摘录
ID123 代码 PL123
ID125 差异 PL12345
ID125 差异 PL123456
ID125 差异 PL1234567

我遇到的一个大问题是,我寻找的大多数命令和一些类似的问题是,使用 str.match 或 str.extract 似乎只有在每一行都有这些值之一的情况下才有效,并且该数据集的情况并非如此。

我已经尝试了很多不同的方法,但一直陷于这一切的不同部分,并希望有人能够以此为我指明正确的方向?

谢谢!

python pandas dataframe pattern-matching data-cleaning
1个回答
0
投票

我假设代码以

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
© www.soinside.com 2019 - 2024. All rights reserved.