草庐IT

GroupBy1

全部标签

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

python - 为通过 groupby 应用结果设置列名称

这是一个相当微不足道的问题,但它触发了我的强制症,在过去的半小时里我一直没能找到合适的解决方案。作为背景,我希望为DataFrame中的每个组计算一个值(我们称之为F),该值源自现有DataFrame中不同列的聚合度量。这是我正在尝试做的一个玩具示例:importpandasaspdimportnumpyasnpdf=pd.DataFrame({'A':['X','Y','X','Y','Y','Y','Y','X','Y','X'],'B':['N','N','N','M','N','M','M','N','M','N'],'C':[69,83,28,25,11,31,14,37,1

python - 什么时候使用 df.value_counts() 与 df.groupby ('...' ).count() 比较合适?

我听说在Pandas中通常有多种方法可以做同样的事情,但我想知道–如果我尝试按特定列中的值对数据进行分组并计算具有该值的项目数,什么时候使用df.groupby('colA').count()有意义什么时候使用df['colA'].value_counts()才有意义? 最佳答案 有区别value_counts返回:Theresultingobjectwillbeindescendingordersothatthefirstelementisthemostfrequently-occurringelement.但是count不是,它