当前位置: 首页 > 知识库问答 >
问题:

有没有更有效的方法多次调用具有不同参数的函数?

司马耘豪
2023-03-14

目前,我得到了以下函数,该函数遍历Pandas DataFrame(df)列并创建一个计数:

def my_function(my_argument):
    count = 0
    for i, row in df.iterrows(): 
        if row['MyColumn'] == my_argument:
            count += row['MyScore']
    return count

我有许多参数要分配给/调用函数——目前,我正在做以下工作:

c = my_function('My_String1')
p = my_function('My_String13')
l = my_function('My_String342')
d = my_function('My_String14')
a = my_function('My_String49')
t = my_function('My_String553')
q = my_function('My_String42')
e = my_function('My_String99')
x = my_function('My_String123')
... ETC...

这样做效果很好,但我想知道是否有更实用/有效的方法可以达到同样的效果。

我正在考虑将变量名添加到列表中,例如cpld等,并形成某种循环——如果这样做可行的话。。。

因此,也许有点像:

for variable_name in list_of_variables:
    # ??? ... But I'm unaware of what would go here.

或者,有没有使用熊猫的方法?

共有3个答案

宫子晋
2023-03-14

我建议您尝试DataFrame支持的Groupby

但是,如果您希望调用自定义函数,我建议将函数参数添加到数组中,比如stringList=[“My_String1”、“My_String13”…]

stringList = ["My_String1", "My_String13", ".."]
results = map(my_function, stringList)

map迭代调用my_function函数,其中包含列表stringList中的每个项。

返回值将存储在结果列表中。

越飞鸾
2023-03-14
map(lambda x: my_function(x), list_of_variables)
荣曾笑
2023-03-14

Pandas有一个内置的方法,即value_counts,它的工作原理类似于groupby,但如果您只想要计数,它会跳过未指定的内容:

import pandas as pd
df = pd.DataFrame({'x':['a','b','c','d','a','a']})
df.x.value_counts()


a    3
b    1
d    1
c    1
Name: x, dtype: int64

### using groupby:

df.groupby('x').size()

x
a    3
b    1
c    1
d    1
dtype: int64

从那里,您可以过滤掉那些不想计数的值(或者在调用value_counts()之前进行)。

 类似资料:
  • 问题内容: 有没有一种方法可以使存根方法在后续调用中返回不同的对象?我想这样做是为了测试来自的不确定响应。即,不管方法的返回顺序如何进行测试,结果都保持恒定。 我要测试的代码看起来像这样。 问题答案: 你可以使用方法来做到这一点(与链接时): 或使用等效的静态doAnswer方法:

  • 问题内容: 我想验证以下行为的方法如下。 在我的@Test类中,我希望做这样的事情来验证是否使用“ exception.message”和再次使用“ exception.detail”进行了调用 但是Mockito抱怨​​如下 我如何告诉Mockito检查两个值? 问题答案: 进一步的阅读使我尝试使用ArgumentCaptors和以下作品,尽管比我想要的更为冗长。

  • 问题内容: 我想知道带有方法引用和功能接口的所有这些东西如何在较低级别上工作。最简单的例子是我们有一些列表 现在我们要使用Collections类对其进行排序,因此我们可以调用: 但是,如果我们定义自定义比较器,则可能类似于: 问题在于Collections.sort具有两个参数:List和Comparator。由于Comparator是功能性接口,因此可以用具有相同签名(参数和返回类型)的lam

  • 我有一个使用函数引用的类: 在典型运行期间,此函数将被称为108次。 类进入库,函数由库的用户定义。所以我不能在类中定义函数。 我读过这个: ()缺点是在被调用时引入一些(非常小的)开销(因此在性能非常关键的情况下,这可能是一个问题,但在大多数情况下不应该) 有没有更有效的方法将函数< code>u传递给类< code>equation?这算不算“性能非常关键的情况”? 编辑 似乎有点混乱。为了清

  • 大家好,我正在使用Java反射来调用方法,并将参数传递给这些方法。下面是示例代码 用于调用方法的一段代码 其中test=“method1”/“method2”/“method3” obj是基类的对象 上面的代码抛出的是NOSuchmethodException

  • 问题内容: 我对包含不带参数的泛型方法的代码感到困惑,所以这种方法的返回泛型类型是什么,例如: 这是通过以下方式调用的: 接口定义为: 我的问题:是否接受字符串,对象和所有内容。那么什么时候将通用返回类型指定为String呢? 问题答案: 编译器从 LHS 分配中使用的具体类型推断出类型。 从此链接: 如果类型参数未出现在方法参数的类型中,则编译器无法通过检查实际方法参数的类型来推断类型参数。如果