Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 包含';灵活';图案_Python_Pandas - Fatal编程技术网

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
Test
data=['DWWAAAWWD']、['dwdwdw']、['wdwwwwd']、['DDW']、['WWD']、['WWD']、]