我一直在使用条件搜索groupby,并发现了许多关于此的帖子。例如:Pandas: conditional group-specific computations
但是,我找不到将条件应用于自身的任何地方。就我而言,我想获取平均值(或计数或其他任何公式),但我找不到的是在动态条件下过滤数据集。
为了说明这一点,这是汇总的数据集:
ID | Seq | Total
1 | 1 | 1
1 | 2 | 2
1 | 3 | 3
2 | 1 | 1
2 | 2 | 2
2 | 3 | 1
如果我想按ID进行均值分组,但要满足附加条件,即对于组内的每个记录,仅必须计算Seq较小的那些记录。这应该是结果
ID | Seq | Total | x
1 | 1 | 1 | 1 <-- mean of 1
1 | 2 | 2 | 1.5 <-- mean of 1 and 2
1 | 3 | 3 | 2 <-- mean of 1,2 and 3
2 | 1 | 1 | 1 <-- mean of 1
2 | 2 | 2 | 1.5 <-- mean of 1 and 2
2 | 3 | 1 | 1.33 < mean of 1, 2 and 1
任何帮助将不胜感激!
答案 0 :(得分:2)
您似乎只是想获取expanding().mean()
分组的ID
列中的Total
,例如:
In []:
df['x'] = df.groupby('ID')['Total'].expanding().mean().values
df
Out[]:
ID Seq Total x
0 1 1 1 1.000000
1 1 2 2 1.500000
2 1 3 3 2.000000
3 2 1 1 1.000000
4 2 2 2 1.500000
5 2 3 1 1.333333