python - 根据数据框中的另一列分配一列

标签 python pandas dataframe

例如,我有以下数据框

 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/

相关文章:

python - 在 Blender 中无线读取数据时运行游戏引擎

python - 如何在for循环中更改为不同的文件行

python-3.x - pandas 数据框获取上一年同月的滞后值

Python DataFrame - 根据列的值应用不同的计算

dataframe - 当分隔符可能丢失时,如何使用 CSV.read 将文件读取到 Julia 中的 DataFrame?

python - 在python中识别具有不同列名的重复列值的列

python - 仅与一项功能相关的昂贵的预先计算数据

python - 与内置指纹传感器 Python 接口(interface)

python - 迭代数据帧的第 n 行

python - 使用字典替换列值