繁体   English   中英

使用正则表达式在 dataframe 或 python 中的列之前添加空格

[英]Add space before capital letters in a dataframe or column in python using regex

阿富汗省份编号表,列是省、中心和联合国区域

我需要将列中的值拆分到大写字母所在的位置。 所以它看起来像这样:

阿富汗西部或阿富汗东北部

到目前为止,我尝试了这个,没有任何改变。 我不希望 go 贯穿每一列。 这是否可以在没有 for 循环的情况下完成,可能使用 apply_all 或 lambda,或两者的组合?

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

使用Series.str.replaceuppercase替换为之前带有空格的相同值,然后删除第一个空格:

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)

另一个解决方案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM