Python 两个空格之间的字符

Python 两个空格之间的字符,python,pandas,Python,Pandas,我有下面这样的数据帧 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']}) 我试图用ids列中的x替换第一个和第二个空格位置之间的第一个字符串 我希望我的数据框看起来像这样 df = pd.DataFrame({'vals': [1, 2, 3, 4, 5], 'ids': [u'a x

我有下面这样的数据帧

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']})
我试图用ids列中的x替换第一个和第二个空格位置之间的第一个字符串

我希望我的数据框看起来像这样

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']})

使用
str。用捕获组替换

\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

使用
str。用捕获组替换

\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

如果不使用正则表达式,这将很好地工作:

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

如果不使用正则表达式,这将很好地工作:

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

这真的很有帮助。。。感谢you@Vikram不客气,这是个有趣的问题。很高兴为我的朋友编码。这真的很有帮助。。。感谢you@Vikram不客气,这是个有趣的问题。很高兴认识我的朋友。