如何在 python 中的列数据框上的特殊字符之间提取字符串?

How to extract a string between special character on a column dataframe in python?

我有这个 Python Pandas DataFrame:

Municipio
São Caetano do Sul (SP)
Florianópolis (SC)
Vitória (ES)    

如何提取()之间的项并将其转化为:

Municipio                   UF
São Caetano do Sul (SP)     (SP)
Florianópolis (SC)          (SC)
Vitória (ES)                (ES)
df['UF'] = df['Municipio'].str.split('(').str[1].str[:-1]

你可以试试pandas.Series.str.extract

df['UF'] = df['Municipio'].str.extract('(\([^)]*\))')
print(df)

                 Municipio  UF
0  São Caetano do Sul (SP)  (SP)
1       Florianópolis (SC)  (SC)
2             Vitória (ES)  (ES)

使用str.extract我们可以尝试:

df["UF"] = df["Municipio"].str.extract(r'(\([A-Z]+\))')

您可以尝试使用命名捕获组:

    df = pd.DataFrame(
        {
            "Municipio": [
                "São Caetano do Sul (SP)",
                "Florianópolis (SC)",
                "Vitória (ES)",
            ]
        }
    )
    print(f"df=\n{df}")
    df = df["Municipio"].str.extract(r"(?P<Municipio>.+(?=\())(?P<UF>\(\w+\))")
    print(f"df_extracted=\n{df}")

输出:

df=
                 Municipio
0  São Caetano do Sul (SP)
1       Florianópolis (SC)
2             Vitória (ES)
df_extracted=
             Municipio    UF
0  São Caetano do Sul   (SP)
1       Florianópolis   (SC)
2             Vitória   (ES)