草庐IT

GroupBy1

全部标签

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 - 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 - 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

python - Pandas 将列添加到 groupby 数据框

我有这个简单的数据框df:df=pd.DataFrame({'c':[1,1,1,2,2,2,2],'type':['m','n','o','m','m','n','n']})我的目标是计算每个c的type值,然后添加一个大小为c的列。所以开始:In[27]:g=df.groupby('c')['type'].value_counts().reset_index(name='t')In[28]:gOut[28]:ctypet01m111n121o132m242n2第一个问题解决了。那么我也可以:In[29]:a=df.groupby('c').size().reset_index(na

python - Pandas groupby 和聚合输出应包括所有原始列(包括未聚合的列)

我有以下数据框并想要:按月份对记录进行分组>每个唯一UPC_ID的QTY_SOLD和NET_AMT总和(每月)在生成的数据框中也包含其余列我认为我可以做到这一点的方法是第1:创建一个month列来聚合D_DATES,然后将QTY_SOLD加总UPC_ID。脚本:#Convertdatetodatetimeobjectdf['D_DATE']=pd.to_datetime(df['D_DATE'])#Createaggregatedmonthscolumndf['month']=df['D_DATE'].apply(dt.date.strftime,args=('%Y.%m',))#Gr

python - 如何从 Pandas 中的groupby对象中选择列?

我按以下两列对我的数据框进行了分组df=pd.DataFrame({'a':[1,1,3],'b':[4.0,5.5,6.0],'c':[7L,8L,9L],'name':['hello','hello','foo']})df.groupby(['a','name']).median()结果是:bcaname1hello4.757.53foo6.009.0如何访问结果中位数的name字段(在本例中为hello,foo)?这失败了:df.groupby(['a','name']).median().name 最佳答案 在groupby