【发布时间】:2021-01-15 01:16:34
【问题描述】:
假设我有一个函数可以在某个数据帧上执行一些计算,其中索引是要考虑的变量,列是年份。例如
df:
1980 1981 1982 .....
var1
var2
var3
.
.
.
def fun(col_df):
var_new=var1+var2/var3
var_new+=df.iloc[:,df.columns.get_loc(col_df+1)].iloc['var_new']
现在假设我有一个数据框frame,其中的观测值由年份和 ID 变量标识。此类标识符被设置为列。
frame:
date ID var1 var2 var3...
0 1980 1
1 1980 2
2 1981 1
3 1981 2
4 1982 1
5 1982 2
.
.
.
我想让函数fun 与pandas 中的groupby() 方法兼容。特别是,我的想法是运行
frame.groupby('ID').transform('fun')
在我将frame 转换为与df 相同的形式后,fun 可以毫无问题地应用。我怎样才能做到这一点?重写函数fun 是否更好,以便它可以逐行应用,请记住,我将不得不处理具有两种类型的“框架”形式的数据框标识符(而不是 1)但在列中表示?
【问题讨论】:
标签: pandas function pandas-groupby