栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在groupby熊猫之后过滤行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在groupby熊猫之后过滤行

您可以

value_counts
booleanindexing
和一起使用
isin

df = pd.Dataframe({    'LeafID':[1,1,2,1,3,3,1,6,3,5,1],    'pidx':[10,10,300,10,30,40,20,10,30,45,20],    'pidy':[20,20,400,20,15,20,12,43,54,112,23],    'count':[10,20,30,40,80,10,20,50,30,10,70],    'score':[10,10,10,22,22,3,4,5,9,0,1]})print (df)    LeafID  count  pidx  pidy  score0        1     10    10    20     101        1     20    10    20     102        2     30   300   400     103        1     40    10    20     224        3     80    30    15     225        3     10    40    20      36        1     20    20    12      47        6     50    10    43      58        3     30    30    54      99        5     10    45   112      010       1     70    20    23      1s = df.pidx.value_counts()idx = s[s>2].indexprint (df[df.pidx.isin(idx)])   LeafID  count  pidx  pidy  score0       1     10    10    20     101       1     20    10    20     103       1     40    10    20     227       6     50    10    43      5

时间

np.random.seed(123)N = 1000000L1 = list('abcdefghijklmnopqrstu')L2 = list('efghijklmnopqrstuvwxyz')df = pd.Dataframe({'LeafId':np.random.randint(1000, size=N),        'pidx': np.random.randint(10000, size=N),        'pidy': np.random.choice(L2, N),        'count':np.random.randint(1000, size=N)})print (df)print (df.groupby('pidx').filter(lambda x: len(x) > 120))def jez(df):    s = df.pidx.value_counts()    return df[df.pidx.isin(s[s>120].index)]print (jez(df))In [55]: %timeit (df.groupby('pidx').filter(lambda x: len(x) > 120))1 loop, best of 3: 1.17 s per loopIn [56]: %timeit (jez(df))10 loops, best of 3: 141 ms per loopIn [62]: %timeit (df[df.groupby('pidx').pidx.transform('size') > 120])10 loops, best of 3: 102 ms per loopIn [63]: %timeit (df[df.groupby('pidx').pidx.transform(len) > 120])1 loop, best of 3: 685 ms per loopIn [64]: %timeit (df[df.groupby('pidx').pidx.transform('count') > 120])10 loops, best of 3: 104 ms per loop

对于

final_score
您可以使用:

df['final_score'] = df['count'].mul(.4).add(df.score.mul(.6))


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661982.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号