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