pandas - 在两列上应用函数,指的是上一行 - Pandas
问题描述
我有包含 x 和 y 变量的数据框,索引是:ID、日期和时间。我想创建将通过应用一些定义的函数来创建的新变量。
例如,函数可以是:
def some_function(x1, x2 , y1, y2):
z = x1*x2 + y1*y2
return z
- 真正的功能更复杂。
注意:该功能应分别应用于每个 ID。
数据说明:
ID date time x y
1 08/27/2019 18:00 1 2
19:00 3 4
20:00 .. ..
21:00 .. ..
2 08/28/2019 18:00 .. ..
19:00 .. ..
19:31 .. ..
19:32 .. ..
19:34 .. ..
例如,新变量中的第一行应该是 0,因为没有前一行,第二行应该是 3*1 + 4*2 = 11。
解决方案
假设索引是数字,
(df.join(df.groupby('id')[['x','y']].shift(),lsuffix='1',rsuffix='2')
.apply(lambda x:some_function(x.x1,x.x2,x.y1,x.y2),axis=1))
推荐阅读
- list - 颤振 - 从列表调用元素到另一个类
- javascript - 尝试记录多个按钮选择(使用数组?)
- r - 运行 for 循环时的 power.prop.test 错误
- android - app:cornerRadius 在 android 材料设计按钮中不起作用
- reactjs - 如何使用 AppContext (React.js) 获取数组中所有键的值
- python - 删除嵌套字典中的重复值
- php - Laravel 选择查询
- unity3d - 为什么在 Unity 中没有调用 OnCollisonEnter2D?
- sql - 具有多个关系 laravel 的播种表
- matplotlib - 我想在 'matplotlibrc font.family' 更改 matplotlib pyplot 字体。但唯一回来的是 'font.family: command not found'