草庐IT

groupby-apply

全部标签

python - 带有 pandas groupby multiindex 的箱线图,用于来自 multiindex 的指定子级别

好的,所以我有一个数据框,其中包含时间序列数据,每列都有一个多行索引。这是数据的样例,它是csv格式的。加载数据在这里不是问题。我想要做的是能够创建一个箱线图,其中包含根据多索引特定行中的不同类别分组的数据。例如,如果我要按“SPECIES”分组,我将在时间序列中的特定时间为每个组提供“aq”、“gr”、“mix”、“sed”和一个框。我试过了:grouped=data['2013-08-17'].groupby(axis=1,level='SPECIES')grouped.boxplot()但它给了我组中每个点的箱线图(平线),而不是分组集。是否有捷径可寻?我没有任何分组问题,因为我

python - Pandas Groupby 和 Sum Only 一列

所以我有一个数据框df1,如下所示:ABC1foo12California2foo22California3bar8RhodeIsland4bar32RhodeIsland5baz15Ohio6baz26Ohio我想按列A分组,然后对列B求和,同时保留列C中的值。像这样的:ABC1foo34California2bar40RhodeIsland3baz41Ohio问题是,当我说df.groupby('A').sum()列C被移除,返回BAbar40baz41foo34当我分组和求和时,如何解决这个问题并保留列C? 最佳答案 这样做的

python - 如何迭代从 groupby().size() 生成的 Pandas 系列

如何遍历.groupby('...').size()命令生成的Pandas系列并获取组名和组数。例如,如果我有:foo-1708511425我如何循环它们,以便在每次迭代中我都会在变量中包含-1&7、0&85、1&14和2&5?我尝试了enumerate选项,但效果不佳。示例:fori,rowinenumerate(df.groupby(['foo']).size()):print(i,row)i不返回-1、0、1和2,而是返回0、1、2、3。 最佳答案 更新:给定一个Pandas系列:s=pd.Series([1,2,3,4],i

Python Pandas : Is Order Preserved When Using groupby() and agg()?

我经常使用pandas的agg()函数对data.frame的每一列运行汇总统计信息。例如,以下是生成均值和标准差的方法:df=pd.DataFrame({'A':['group1','group1','group2','group2','group3','group3'],'B':[10,12,10,25,10,12],'C':[100,102,100,250,100,102]})>>>df[output]ABC0group1101001group1121022group2101003group2252504group3101005group312102在这两种情况下,将各个行发送到

python - Pandas 数据帧 : apply function to all columns

我可以在df的任何列上使用.map(func),例如:df=DataFrame({'a':[1,2,3,4,5,6],'b':[2,3,4,5,6,7]})df['a']=df['a'].map(lambdax:x>1)我也可以:df['a'],df['b']=df['a'].map(lambdax:x>1),df['b'].map(lambdax:x>1)是否有更Pythonic的方式将函数应用于所有列或整个框架(没有循环)? 最佳答案 如果我没听错,您正在寻找applymap方法。>>>printdfABC0-1001-43-1

python - Groupby 值对数据框 pandas 的计数

我有以下数据框:df=pd.DataFrame([(1,1,'term1'),(1,2,'term2'),(1,1,'term1'),(1,1,'term2'),(2,2,'term3'),(2,3,'term1'),(2,2,'term1')],columns=['id','group','term'])我想按id和group对它进行分组,并计算这个id,组对的每个术语的数量。所以最后我会得到这样的东西:我能够通过使用df.iterrows()遍历所有行并创建一个新的数据框来实现我想要的,但这显然效率低下。(如果有帮助,我事先知道所有术语的列表,其中大约有10个)。看起来我必须先分组

python - 没有要聚合的数字类型 - groupby() 行为的变化?

我很确定曾经运行过一些有问题的代码(在较旧的pandas版本上)。在0.9上,我得到Nonumerictypestoaggregate错误。有什么想法吗?In[31]:dataOut[31]:DatetimeIndex:2557entries,2004-01-0100:00:00to2010-12-3100:00:00Freq:Columns:360entries,-89.75to89.75dtypes:object(360)In[32]:latedges=linspace(-90.,90.,73)In[33]:lats_new=linspace(-87.5,87.5,72)In[34

python - Pandas GroupBy 的绘图结果

我开始学习Pandas,并试图找到最Pythonic(或Panda-thonic?)的方法来完成某些任务。假设我们有一个包含A、B和C列的DataFrame。A列包含bool值:每一行的A值为真或假。B列有一些我们想要绘制的重要值。我们想要发现的是A设置为false的行的B值与A设置为true的行的B值之间的细微差别。换句话说,我怎样才能按A列的值(真或假)进行分组,然后在同一张图上为两个组绘制B列的值?这两个数据集应该用不同的颜色来区分这些点。接下来,让我们为这个程序添加另一个功能:在绘图之前,我们要为每一行计算另一个值并将其存储在D列中。这个值是在A之前的整个五分钟内存储在B中的所

python pandas, DF.groupby().agg(), agg() 中的列引用

在一个具体问题上,假设我有一个DataFrameDFwordtagcount0aS301theS202aT603anT54theT10我想为每个“单词”找到“计数”最多的“标签”。所以返回会是这样的wordtagcount1theS202aT603anT5我不关心计数列,也不关心订单/索引是原始的还是困惑的。返回字典{'the':'S',...}就可以了。我希望我能做到DF.groupby(['word']).agg(lambdax:x['tag'][x['count'].argmax()])但它不起作用。我无法访问列信息。更抽象地说,agg(function)中的function将其

python - pandas.Series.apply 中的访问索引

假设我有一个MultiIndex系列s:>>>svaluesab120.1360.3440.7我想应用一个使用行索引的函数:deff(x):#conditionsorcomputationsusingtheindexesifx.index[0]and...:other=sum(x.index)+...returnsomething我怎样才能为这样的功能做s.apply(f)?进行这种操作的推荐方法是什么?我希望获得一个新的系列,该系列的值应用在每一行和相同的MultiIndex上。 最佳答案 我不相信apply可以访问索引;如您所见