草庐IT

groupby-apply

全部标签

python - Pandas Groupby 只取前 N 组

这个问题在这里已经有了答案:Selectmultiplegroupsfrompandasgroupbyobject(5个答案)关闭7年前。我有一些DataFrame,我想按ID分组,e。例如:importpandasaspddf=pd.DataFrame({'item_id':['a','a','b','b','b','c','d'],'user_id':[1,2,1,1,3,1,5]})printdf生成:item_iduser_id0a11a22b13b14b35c16d5[7rowsx2columns]我可以轻松地按id分组:grouped=df.groupby("item_id

python - 从 pandas groupby 对象中选择多个组

我正在试验pandas的groupby特性,特别是gb=df.groupby('model')gb.hist()由于gb有50个组,结果非常困惑,我只想探索前5个组的结果。我找到了如何使用groups或get_group(Howtoaccesspandasgroupbydataframebykey)选择单个组,但没有找到如何直接选择多个组。我能做的最好的是:groups=dict(list(gb))subgroup=pd.concat(groups.values()[:4])subgroup.groupby('model').hist()有没有更直接的方法?

Python 3 Pandas .groupby.过滤器

我正在尝试执行与本文档中的示例非常相似的groupby过滤器:pandasgroupbyfilter>>>df=pd.DataFrame({'A':['foo','bar','foo','bar',...'foo','bar'],...'B':[1,2,3,4,5,6],...'C':[2.0,5.,8.,1.,2.,9.]})>>>grouped=df.groupby('A')>>>grouped.filter(lambdax:x['B'].mean()>3.)ABC1bar25.03bar41.05bar69.0我试图返回一个包含所有3列但只有2行的DataFrame。在按A列分组

python - map_async 与 apply_async :what should I use in this case

我正在处理一些ascii数据,进行一些操作,然后将所有内容写回另一个文件(由post_processing_0.main完成的工作,不返回任何内容)。我想将代码与多处理模块并行化,请参见以下代码片段:frommultiprocessingimportPoolimportpost_processing_0defchunks(lst,n):return[lst[i::n]foriinxrange(n)]defmain():pool=Pool(processes=proc_num)P={}foriinrange(0,proc_num):P['process_'+str(i)]=pool.ap

python - Pandas groupby 两列然后获取值的字典

我有一个Pandas数据框:banned_titles=TitleIdRelatedTitleId0899893259818998930850832952813085083当我按如下方式应用groupby时In[84]:banned_titles.groupby('TitleId').groupsOut[84]:{89989:[0,1],95281:[2]}这太近了,但不是我想要的。我想要的是:{89989:[32598,3085083],95281:[3085083]}有办法吗? 最佳答案 试试这个:In[8]:x.groupby

python - 在 pandas 中是否有类似 GroupBy.get_group 的东西,但有一个可选的默认值?

我有一个DataFramedf,我已经对其进行了“分组”。我正在寻找一个类似于get_group(name)的函数,除了它不是在名称不存在时抛出KeyError,而是返回一个空的DataFrame(或其他一些值),类似于dict.get的工作方式:g=df.groupby('x')#doesn'twork,butwouldbenice:i=g.get_group(1,default=[])#doeswork,butishardtoread:i=g.obj.take(g.indices.get(1,[]),g.axis)是否已经有提供此功能的功能?编辑:在许多方面,GroupBy对象由字

python - pandas groupby 并转换为 json 列表

我有一个像下面这样的Pandas数据框idx,f1,f2,f31,a,a,b2,b,a,c3,a,b,c...87e,e,e我需要将其他列转换为基于idx列的字典列表。所以,最终结果应该是:idx,features1,[{f1:a,f2:a,f3:b},{f1:b,f2:a,f3:c},{f1:a,f2:b,f3:c}]...87,[{f1:e,f2:e,f3:e}]是否可以在pandas中使用groupby做这样的事情? 最佳答案 您可以使用groupby按index然后applyto_json:printdff1f2f3idx1

python - 使用 apply 向现有数据框添加 2 个新列

我想使用apply函数:-将2列作为输入-基于函数输出两个新列。一个例子是这个add_multiply函数。#functionwith2columninputsand2outputsdefadd_multiply(a,b):return(a+b,a*b)#exampledataframedf=pd.DataFrame({'col1':[1,2],'col2':[3,4]})#thisdoesn'tworkdf[['add','multiply']]=df.apply(lambdax:add_multiply(x['col1'],x['col2']),axis=1)理想的结果:col1c

python - Pandas Groupby Agg 函数中的列顺序

是否有自动维护返回数据框的列(“C”、“B”、“A”)顺序的方法?g=df.groupby(['people'])g['people'].agg({'C':len,'B':len,'A':len,})这将返回列A、B、C而不是C、B、A。我只能找到示例,但找不到agg函数本身的文档。这似乎是一种解决方法:g=df.groupby(['people'])g['people'].agg({'C':len,'B':len,'A':len,}).reindex_axis(['C','B','A'],axis=1) 最佳答案 OrderedD

python - 使 Pandas groupby 的行为类似于 itertools groupby

假设我有一个像这样的列表的Python字典:{'Grp':['2','6','6','5','5','6','6','7','7','6'],'Nums':['6.20','6.30','6.80','6.45','6.55','6.35','6.37','6.36','6.78','6.33']}我可以使用itertools.groupby轻松对数字和分组键进行分组:fromitertoolsimportgroupbyfork,lingroupby(zip(di['Grp'],di['Nums']),key=lambdat:t[0]):printk,[t[1]fortinl]打印:2