Pandas Groupby 显示不匹配的值

问题描述 投票:0回答:1

我有以下数据框:

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

非常感谢您提前提出任何建议!

python pandas group-by conditional-statements
1个回答
0
投票

您可以为不匹配条件的值创建一个布尔列,并使用

groupby.transform
来识别具有所有不匹配行的 STOCK:
all
输出:

out = df[df['CODE'].str.len().ne(16).groupby(df['STOCK']).transform('all')]

© www.soinside.com 2019 - 2024. All rights reserved.