我有以下数据框:
data = [['123456ABCD234567', 'A'], ['8502', 'A'],
['74523654894WRZI3', 'B'], ['85CGNK6987541236', 'B'],
['WF85Z4HJ95R4CF2V', 'C'], ['VB52FG85RT74DF96', 'C'],
['WERTZ852146', 'D'], ['APUNGF', 'D']
]
df = pd.DataFrame(data, columns=['CODE', 'STOCK'])
df
CODE STOCK
0 123456ABCD234567 A
1 8502 A
2 74523654894WRZI3 B
3 85CGNK6987541236 B
4 WF85Z4HJ95R4CF2V C
5 VB52FG85RT74DF96 C
6 WERTZ852146 D
7 APUNGF D
每只股票都是不同代码的一部分。该代码的长度应为 16 个字符。我的目标是过滤掉任何没有附加代码且不由 16 个字符组成的股票。本例中,股票A至少有一个长度为16个字符的代码,因此应保留。然而,库存 D 没有长度为 16 个字符的代码。
我相信这可以使用 Pandas 中的 groupby 函数来完成。
最终,我的目标是获得以下输出:
CODE STOCK
6 WERTZ852146 D
7 APUNGF D
非常感谢您提前提出任何建议!
groupby.transform
来识别具有所有不匹配行的 STOCK:
all
输出:
out = df[df['CODE'].str.len().ne(16).groupby(df['STOCK']).transform('all')]