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

标签 python python-2.7 loops pandas for-loop

目前我有以下函数遍历 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...

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

我正在考虑添加变量名称,例如c, p, l, d 等到列表并形成某种循环 - 如果那甚至可以工作...

因此,也许有点像:

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

或者,是否有使用 Pandas 的方法?

最佳答案

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() 之前执行)。

关于python - 有没有更有效的方法来多次调用具有不同参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41267510/

相关文章:

python - 如果到达代码中的非法位置,会引发哪个异常?

Java将两个数组转为一个二维数组

mysql - 如何循环遍历表的所有行? (MySQL)

.net - 我有 3 种方法来获取数组的 ubound

python - 当它出现一次时删除子字符串,但在 python 中连续出现两次时不删除

python - 代码在pycharm中运行良好,但转换为exe时却不行

python - 在不同平台上掀起浪潮

python - 如何在 Windows 中安装 pacparser?

python - 在 panda python 中解析组合最小值最大值的通用方法是什么?

python - 使用 b4 抓取时排除隐藏标签