两个空格之间的字符

2024-09-28 21:52:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面这样的数据帧

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

Tags: 数据idsdataframedfispdllbb
2条回答

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

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

对捕获组使用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

相关问题 更多 >