【发布时间】:2019-11-27 04:55:22
【问题描述】:
我有以下 pandas DataFrame df:
id col1 col2
1 7 1.2
1 6 0.8
1 12 0.9
1 1 1.1
2 3 2.0
2 6 1.8
3 10 0.7
3 11 0.9
3 12 1.2
这里是创建这个df的代码:
import pandas as pd
df = pd.DataFrame({'id': [1,1,1,1,2,2,3,3,3],
'col1': [7,6,12,1,3,6,10,11,12],
'col2': [1.2,0.8,0.9,1.1,2.0,1.8,0.7,0.9,1.2]})
我需要按id 分组并将myfunc 函数应用于每个组。问题是myfunc 需要几个相互关联的列作为输入。最终目标是为每个id 创建一个新列new_col。
我该怎么做?
这是我当前的代码:
def myfunc(df, col1, col2):
df1 = col1
df2 = df[df[col2] < 1][[col1]]
var1 = df1.iloc[0]
var2 = df2.iloc[0][0]
result = var2 - var1
return result
df["new_col"] = df.groupby("id").agg(myfunc(...??))
【问题讨论】:
-
也许您在寻找
apply(而不是agg)? -
@AlexandreB.: 该函数应该将
col1的第一个值作为var1并将col1的第一个值通过col2上的条件作为var2。然后我应该计算var1和var2之间的差异。查看更新。