Добавьте пробел перед заглавными буквами в кадре данных или столбце в Python, используя регулярное выражение - PullRequest
1 голос
/ 28 сентября 2019

numbered table of provinces in Afghanistan, columns are Province, Centers, and U.N. Region

Мне нужно, чтобы значения в столбцах были разделены на заглавные буквы.Так это выглядит так:

Западный Афганистан или Северо-Восточный Афганистан

Я пробовал это до сих пор, и ничего не меняется.Я бы предпочел не проходить через каждую колонку.Возможно ли обойтись без цикла for, возможно, с применением apply_all или lambda или их сочетанием?

afg_regions['U.N. Region'].replace(('[A-z]','[A-z]*(\s)[A-z]*'),regex=True,inplace=True)

Ответы [ 3 ]

2 голосов
/ 28 сентября 2019

Используйте Series.str.replace с заменой uppercase теми же значениями с пробелом перед, а затем удалите первый пробел:

df = pd.DataFrame({'U.N.Region':['WestAfghanistan','NorthEastAfghanistan']})

df['U.N.Region'] = df['U.N.Region'].str.replace( r"([A-Z])", r" \1").str.strip()
print (df)
                U.N.Region
0         West Afghanistan
1   North East Afghanistan
0 голосов
/ 28 сентября 2019

Еще одно решение:

df.apply(lambda col: col.str.replace(r"([a-z])([A-Z])",r"\1 \2"))  

Out: 
              U.N. Region   Centers
0  North East Afghanistan  Fayzabad
1        West Afghanistan  Qala Naw
0 голосов
/ 28 сентября 2019

Другой вариант будет,

import pandas as pd
import re


df = pd.DataFrame({'U.N.Region': ['WestAfghanistan', 'NorthEastAfghanistan']})

df['U.N.Region'] = df['U.N.Region'].str.replace(
    r"(?<=[a-z])(?=[A-Z])", " ")
print(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...