PythonPandas。如何将特定行的提取结果更新为原始特定行的其他列?

2024-07-08 18:01:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些数据如下:

In [1]:
import pandas as pd
data = [["xxxx【A001-01】", "A001-01"],
        ["xxxx【A002】",    ""],
        ["xxxx【A003-01】", "A003-01"]]
df = pd.DataFrame(data=data,columns=['A','B'])
df

out[1]:
                 A        B
0   xxxx【A001-01】   A001-01
1   xxxx【A002】  
2   xxxx【A003-01】   A003-01

我试过了,但没有成功:

df.loc[df['B'] == ""]["B"] = df.loc[df['B'] == ""]["A"].str.extract(r"(【[A-Z][0-9]+】)",expand=True).replace("【", "",regex=True).replace("】", "",regex=True)

我希望得到以下结果:

out[1]:
                 A        B
0   xxxx【A001-01】   A001-01
1   xxxx【A002】      A002
2   xxxx【A003-01】   A003-01

Tags: 数据inimporttruedfdataoutloc
1条回答
网友
1楼 · 发布于 2024-07-08 18:01:28

更改【】之间提取值的regex模式,只创建一次布尔掩码m,最后使用^{}按掩码和列选择:

m = df['B'] == ""
df.loc[m, "B"] = df.loc[m,"A"].str.extract(r"【([A-Z][0-9]+)】",expand=False)

print (df)
               A        B
0  xxxx【A001-01】  A001-01
1     xxxx【A002】     A002
2  xxxx【A003-01】  A003-01

相关问题 更多 >

    热门问题