我的数据框有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))
谢谢
(可以使用方括号表示法代替点号吗?)
答案 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)