我在pandas数据帧上做了很多操作。例如,在列和return the column names in a new column内找到最大, min 和平均。现在我尝试将这些东西包装成一个函数,并在此函数中使用max()
和/或min()
作为参数。
下面是一个片段,以非常简单的方式描述了我尝试做的事情。在其当前状态下,它还返回所需输出的描述。该片段没有所需的功能和灵活性。
# Sample dataframe
df = pd.DataFrame({'col_A':[1,20,6,1,3]})
def findValue(function, df, colname):
print(function) # just a placeholder
df[colname] = df.max()[0]
return df
df2 = findValue(function='max', df=df, colname='col_B')
print(df)
col_A col_B
0 1 20
1 20 20
2 6 20
3 1 20
4 3 20
# Sample dataframe
df = pd.DataFrame({'col_A':[1,20,6,1,3]})
# The function I would like to use in another function is max()
# My function
def findValue(function, df, colname):
df[colname] = df.function()[0]
return df
df2 = findValue(function=max(), df=df , colname='col_B')
print(df)
Traceback (most recent call last):
File "<ipython-input-7-85964ff29e69>", line 1, in <module>
df2 = findValue(function=max(), df=df , colname='col_B')
TypeError: max expected 1 arguments, got 0
如何更改上述代码段,以便我可以将function = max()
更改为function = min()
或findValue()
参数中的任何其他功能?或者甚至定义一个以类似方式使用的函数列表?
感谢您的任何建议!
答案 0 :(得分:2)
你非常非常接近。你几乎需要在传递函数时删除parens。这是一个简化的示例,循环遍历函数名称列表,并且似乎可以执行您想要的操作:
def findValue(func, x, y):
return func(x, y)
for calc in (max, min):
result = findValue(func=calc, x=1, y=10)
print(result)
输出:
10
1