代码之家  ›  专栏  ›  技术社区  ›  Vikram Karthic

两个空格之间的字符

  •  2
  • Vikram Karthic  · 技术社区  · 3 年前

    我需要紧急帮助,我有下面的数据帧

    df = pd.DataFrame({'vals': [1, 2, 3, 4, 5], 'ids': [u'a iball is', u'aaa vcat ll', u'c cnut bb', u'fdfdf qbell l', 'bxyz zbat c']})
    

    我想在数据框中看到这样的东西

        df = pd.DataFrame({'vals': [1, 2, 3, 4, 5], 'ids': [u'a xball is', u'aaa xcat ll', u'c xnut bb', u'fdfdf xbell l', 'bxyz xbat c']})
    

    请求帮助!

    2 回复  |  直到 3 年前
        1
  •  3
  •   Umar.H    3 年前

    使用 str.replace 与捕获组。

    \1

    ^ 在行的开始处断言模式。

    \w 匹配任何单词[A-Za-z0-9]

    + 是一个贪婪匹配,以尽可能多地匹配前一个标记。

    df['ids'].str.replace('(^\w+\s)(\w{1})', r'\1x')
    
    0       a xball is
    1      aaa xcat ll
    2        c xnut bb
    3    fdfdf xbell l
    4      bxyz xbat c
    Name: ids, dtype: object
    
        2
  •  1
  •   Cute Panda    3 年前

    如果不使用regex,这将很好地工作:

    import pandas as pd
    df = pd.DataFrame({'vals': [1, 2, 3, 4, 5], 'ids': [u'a iball is', u'aaa vcat ll', u'c cnut bb', u'fdfdf qbell l', 'bxyz zbat c']})
    for row in df.iterrows():
        temp = row[1]['ids'].split()
        val = temp[1]    
        val = 'x'+val[1:]
        temp[1] = val
        s = " ".join(temp)
        df.loc[df['ids']==row[1]['ids'], 'ids'] = s
    df
    

    Output