使用正则表达式在python中的数据帧或列中的大写字母前添加空格

使用正则表达式在python中的数据帧或列中的大写字母前添加空格,python,regex,pandas,dataframe,Python,Regex,Pandas,Dataframe,我需要将列中的值拆分为大写字母。看起来是这样的: 阿富汗西部还是阿富汗东北部 到目前为止,我尝试过这个,但没有任何改变。我不想看每一个专栏。这是否可以在没有for循环的情况下实现,可能使用apply_all或lambda,或者两者的组合 afg_地区['U.N.地区]]。替换“[A-z]”、“[A-z]*\s[A-z]*”,regex=True,inplace=True 与一起使用,将大写字母替换为前面有空格的相同字母,然后删除第一个空格: df = pd.DataFrame({'U.N.Reg

我需要将列中的值拆分为大写字母。看起来是这样的:

阿富汗西部还是阿富汗东北部

到目前为止,我尝试过这个,但没有任何改变。我不想看每一个专栏。这是否可以在没有for循环的情况下实现,可能使用apply_all或lambda,或者两者的组合

afg_地区['U.N.地区]]。替换“[A-z]”、“[A-z]*\s[A-z]*”,regex=True,inplace=True 与一起使用,将大写字母替换为前面有空格的相同字母,然后删除第一个空格:

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
与一起使用,将大写字母替换为前面有空格的相同字母,然后删除第一个空格:

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

另一个选择是

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)

另一个选择是

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)
另一个解决方案:

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
另一个解决方案:

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

好的解决方案,如果它解释了原始正则表达式的问题,那将是一个更好的答案!这很完美,但有没有办法将其应用于整个数据帧,即所有列?afg_区域然后使用df=df.applylambda x:x.str.replace r[A-Z],r\1.str.strip好的解决方案,如果它解释了原始正则表达式的问题,将是一个更好的答案!这很完美,但有没有办法将其应用于整个数据帧,即所有列?afg_区域然后使用df=df.applylambda x:x.str.replace r[A-Z],r\1.str.stripBeatiful!df=df.applylambda col:col.str.replacer[a-z][a-z],r\1\2成功了!谢谢你,这正是我所能容忍的!df=df.applylambda col:col.str.replacer[a-z][a-z],r\1\2成功了!谢谢,这正是我想要的