2016-07-29 32 views
3

pandas.DataFrame.replace正則表達式是否支持通配符和「捕獲組」?pandas.DataFrame.replace with wildcards

例如,用\2\1代替([A-Z])(\w+)

支持哪種正則表達式? Perl的正則表達式是否受支持?例如,確定與\l\1\2更換([A-Z])(\w+)\l更改下一個字符爲小寫

UPDATE:

正如史蒂夫指出,根據Python documentation,它應該工作,但以下是不給我我的預期:

df = pd.DataFrame({'A': np.random.choice(['foo', 'bar'], 100), 
        'B': np.random.choice(['one', 'two', 'three'], 100), 
        'C': np.random.choice(['I1', 'I2', 'I3', 'I4'], 100), 
        'D': np.random.randint(-10,11,100), 
        'E': np.random.randn(100)}) 
df.replace("f(.)(.)","b\1\2", regex=True,inplace=True) 

怎麼了?

THX

+2

你需要在正則表達式中使用原始字符串!反斜槓正在逃避字符串中的1和2個字符!這應該工作:'df.replace(r「f(。)(。)」,r「b \ 1 \ 2」,regex = True,inplace = True)'注意第一個參數的原始字符串是過度殺傷性的,但你應該進入使用正則表達式的習慣 –

+0

BINGO!謝謝!! – xpt

回答

2

按照pandas documentation

正則表達式替換與應用re.sub罩下進行。替代re.sub的規則是相同的。

所以,是的,它可以與Python的re.sub(如\1)也可以用pandas.DataFrame.replace執行進行任何替換。有關更多信息,請參閱Python documentation