例如,我有以下数据框
univ date ms kv
A 11/01/2007 1 0.2
A 11/02/2007 0 0.3
A 11/03/2007 1 0.4
A 11/05/2007 1 0.1
B 11/01/2007 0 0.11
B 11/03/2007 1 0.12
B 11/04/2007 1 0.13
对于每个大学组,我想计算 ms = 1 之后下一个可用日期的 kv 平均值。因此,在上述 A 的情况下,在 11/01、11/03 和 11/上 ms = 1 05 所以输出应该是
univ kv
A 0.2 ( average of 0.3 and 0.1)
我还想让“下一个可用日期”变得灵活,它可以是“第二个下一个或第三个下一个可用日期”
非常感谢!
最佳答案
IIUC:
In [244]: n=1
In [245]: df.groupby('univ') \
.apply(lambda x: x.loc[x.ms.shift(n)==1, 'kv'].mean()) \
.reset_index(name='kv')
Out[245]:
univ kv
0 A 0.20
1 B 0.13
<小时/>
In [246]: n=2
In [247]: df.groupby('univ') \
.apply(lambda x: x.loc[x.ms.shift(n)==1, 'kv'].mean()) \
.reset_index(name='kv')
Out[247]:
univ kv
0 A 0.4
1 B NaN
关于python - 根据数据框中的另一列分配一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45362219/