草庐IT

groupby-agg

全部标签

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

python - Pandas Groupby : Count and mean combined

使用pandas尝试将数据框总结为特定类别的计数,以及这些类别的平均情绪分数。有一个充满具有不同情绪分数的字符串的表格,我想通过说明他们有多少帖子以及这些帖子的平均情绪来对每个文本源进行分组。我的(简化的)数据框如下所示:sourcetextsent--------------------------------barsomestring0.13fooaltstring-0.8baranotherstr0.7foosometext-0.2foomoretext-0.5输出应该是这样的:sourcecountmean_sent-----------------------------fo

python - 在 pandas groupby 之后删除一个组

是否可以从pandas的groupby对象中删除一个组(按组名)?即执行groupby后,根据名称删除结果组。 最佳答案 分组过滤DataFrame是discussed.future发布的pandas可能包括amoreconvenientwaytodoit.但目前,这是我认为最简洁的方法来按名称过滤GroupBy对象grouped并返回剩余组的DataFrame。df.drop(grouped.get_group(group_name).index)这里是从上面的链接派生的更通用的方法:df[grouped[0].transform

python - Pandas :GroupBy .pipe() 与 .apply()

在pandasdocumentation的示例中关于GroupBy对象的新.pipe()方法,接受相同lambda的.apply()方法将返回相同的结果。In[195]:importnumpyasnpIn[196]:n=1000In[197]:df=pd.DataFrame({'Store':np.random.choice(['Store_1','Store_2'],n),.....:'Product':np.random.choice(['Product_1','Product_2','Product_3'],n),.....:'Revenue':(np.random.random

python - pandas:groupby 和聚合而不会丢失分组的列

我有一个pandas数据框,如下所示。对于每个ID,我可以有多个名称和子ID。IdNAMESUB_ID276956A5933276956B5934276956C5935287266D1589我想压缩数据框,使每个id只有一行,每个id下的所有名称和sub_id在该行上显示为单个集合IdNAMESUB_ID276956set(A,B,C)set(5933,5934,5935)287266set(D)set(1589)我尝试按id分组,然后聚合所有其他列df.groupby('Id').agg(lambdax:set(x))但是在这样做时生成的数据框没有Id列。当您执行groupby时,i

python - Pandas :为groupby标识的每个组分配一个索引

当使用groupby()时,如何创建一个包含组编号索引的新列的DataFrame,类似于R中的dplyr::group_indices。例如,如果我有>>>df=pd.DataFrame({'a':[1,1,1,2,2,2],'b':[1,1,2,1,1,2]})>>>dfab011111212321421522我怎样才能得到像这样的DataFrameabidx011111112122321342135224(idx索引的顺序无关紧要) 最佳答案 这是使用来自acommentabovebyConstantino的ngroup(自pa

python - pandas groupby-apply 行为,返回一个系列(输出类型不一致)

我很好奇pandasgroupby-apply在apply函数返回一个系列时的行为。当序列长度不同时,返回多索引序列。In[1]:importpandasaspdIn[2]:df1=pd.DataFrame({'state':list("AABBB"),...:'city':list("vwxyz")})In[3]:df1Out[3]:citystate0vA1wA2xB3yB4zBIn[4]:deff(x):...:returnpd.Series(x['city'].values,index=range(len(x)))...:In[5]:df1.groupby('state').a

python - Pandas - dataframe groupby - 如何获取多列的总和

这应该很简单,但不知何故我找不到可行的解决方案。我有一个pandas数据框,如下所示:indexcol1col2col3col4col50ac12f1ac12f2ad12f3bd12g4be12g5be12g我想按col1和col2分组并得到col3和col4的sum()。col5可以被删除,因为数据无法聚合。输出应该是这样的。我对在生成的数据框中同时包含col3和col4感兴趣。col1和col2是否是索引的一部分并不重要。indexcol1col2col3col40ac241ad122bd123be24这是我尝试过的:df_new=df.groupby(['col1','col2'

python groupby行为?

>>fromitertoolsimportgroupby>>keyfunc=lambdax:x>500>>obj=dict(groupby(range(1000),keyfunc))>>list(obj[True])[999]>>list(obj[False])[]range(1000)显然默认是针对条件(x>500)排序的。我期望从0到999的数字按条件(x>500)分组在dict中。但是生成的字典只有999。其他数字在哪里?任何人都可以解释这里发生了什么吗? 最佳答案 来自docs:Thereturnedgroupisitsel