Python 使用 Pandas 进行数据清理

Python Data Cleaning with Pandas

我的数据集是这样的

Name    Subset            Value
A       67-A-5678          14
A       58-ABC-87555       187
A       45-ASH-87954       5465
S       34-A-8785          454
S       58-ASO-98978       54
S       23-ASH-87895       784
X       98-X-87876         455
X       87-ABC-54578       4545
X       56-ASH-89667       854
Y       09-D-98644         45
Y       87-ABC-78834       98
Y       87-ASH-87455A      4566
L       67-A-87545         78
L       89-GHS-08753       12 
L       78-PHU-09876       655 

我只想保留那些“子集”列具有模式的行组; **ABC*ASH(注:*是任意字母或数字)。

例如,输出应如下所示

Name    Subset             Value
A       67-A-5678          14
A       58-ABC-87555       187
A       45-ASH-87954       5465
X       98-X-87876         455
X       87-ABC-54578       4545
X       56-ASH-89667       854
Y       09-D-98644         45
Y       87-ABC-78834       98
Y       87-ASH-87455A      4566

P.S。实际数据集可以有很多 columns/rows.

试试这个:

filtered = df[df.groupby('Name')['Subset'].transform(lambda x: len(x) >= 3 and'-ABC-' in x.iloc[1] and '-ASH-' in x.iloc[2])]

输出:

>>> filtered
   Name         Subset  Value
0     A      67-A-5678     14
1     A   58-ABC-87555    187
2     A   45-ASH-87954   5465
6     X     98-X-87876    455
7     X   87-ABC-54578   4545
8     X   56-ASH-89667    854
9     Y     09-D-98644     45
10    Y   87-ABC-78834     98
11    Y  87-ASH-87455A   4566