创建由Groupby和转换产生的数据框列

时间:2019-04-13 06:11:42

标签: pandas group-by transform

我的数据框有4列textID,A,B,C

我想创建一个groupby对象,然后计算C列的第5个百分位数,然后将此列(称为“分位数”)添加回原始数据帧。

我有以下这段代码,当groupby位于一列时可以使用

classTag

问题1: 如何扩展它,以便groupby对象现在使用两列,即textID和A?

问题2: 是否可以先创建groupby对象,然后再应用转换? 即

df2['quantile']=df2.C.groupby(df2.itextID).transform(lambda x: 
x.quantile(q=0.5))

谢谢

(可以使用方括号表示法代替点号吗?)

1 个答案:

答案 0 :(得分:3)

public static IEnumerable<int> GetDiff(int start, int end) { while (start < end) { yield return start; start++; } // yield break; - It is not necessary. It is like `return` which does not return a value. } 内的列表中使用具有列名的替代项,并指定public static IEnumerable<int> GetDiff(int start, int end) { while (true) { if (start >= end) yield break; yield return start; start++; } Console.WriteLine("Finish"); // note that this line will not be executed } 之后的列以处理groupby或其他函数:

groupby

这里transform是DataFrame,而不是df2['quantile']= (df2.groupby(['itextID', 'A'])['C'] .transform(lambda x: x.quantile(q=0.5))) 对象,因为GroupBy.head返回grp

groupby

但是可以通过删除DataFrame来创建grp = df2.groupby('textID').head(4) 对象:

groupby

然后使用.head(4)

grp = df2.groupby('textID')

head

df = grp.head(4)