Python 包含';灵活';图案
我有以下几点意见Python 包含';灵活';图案,python,pandas,Python,Pandas,我有以下几点意见 data = [ ['DWWWWD'], ['DWDW'], ['WDWWWWWWWWD'], ['DDW'], ['WWD'], ] df = pd.DataFrame(data, columns=['letter_sequence']) 我想对包含模式'D'+'[以W的数目为准]'+'D'的行进行子集划分。我希望在输出df中使用的行的示例:DWD,dwwwd,wwwdw 我得出了以下结论,但它并不适用于“任意数量的W” df[df
data = [
['DWWWWD'],
['DWDW'],
['WDWWWWWWWWD'],
['DDW'],
['WWD'],
]
df = pd.DataFrame(data, columns=['letter_sequence'])
我想对包含模式'D'+'[以W的数目为准]'+'D'
的行进行子集划分。我希望在输出df中使用的行的示例:DWD
,dwwwd
,wwwdw
我得出了以下结论,但它并不适用于“任意数量的W”
df[df['letter_sequence'].str.contains(
'DWD|DWWD|DWWWD|DWWWWD|DWWWWWD|DWWWWWWD|DWWWWWWWD|DWWWWWWWWD', regex=True
)]
所需的输出新的\u df
:
letter_sequence
0 DWWWWD
1 DWDW
2 WDWWWWWWWWD
任何备选方案?对一个或多个
W
使用[W]{1,}
,默认情况下,regex=True
,因此应忽略:
df = df[df['letter_sequence'].str.contains('D[W]{1,}D')]
print (df)
letter_sequence
0 DWWWWD
1 DWDW
2 WDWWWWWWWWD
您可以使用正则表达式:
D\w+D
。
代码如下所示:
df = df[df['letter_sequence'].str.contains('Dw+D')]
如果有帮助,请告诉我。这是错误的,处理
DD
之间的所有字母,而不仅仅是W
Testdata=['DWWAAAWWD']、['dwdwdw']、['wdwwwwd']、['DDW']、['WWD']、['WWD']、]