【发布时间】:2017-05-07 03:45:09
【问题描述】:
目前我有以下函数遍历 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 的方法?
【问题讨论】:
-
你看过
groupby吗? stackoverflow.com/questions/14941366/… -
这有时很难设置,但请查看
DataFrameapply和applymap函数。 (在直接 Python 中,您只需使用map(function, [arg-set-1, arg-set-1, arg-set-3])或列表理解[function(x) for x in (arg-set-1, arg-set-2, arg-set-3),但 numpy/pandas 也有自己的版本,如果他们使用 numpy/pandas 数学无论如何可能会更快(如果他们不是,常规地图可能就可以了)。 -
如果您使用 pandas 并且正在循环播放,那么大多数时候您的做法是错误的。 Pandas 为您节省了循环。
-
@doctorlove 介意发布一个例子吗? - 我已经看过并且老实说很难理解我将如何使用它来实现我的结果。非常感谢您的回答:-)
-
@MohammadYusufGhazi 谢谢。虽然,我并不特别了解如何使用它来提供相同的结果。
标签: python python-2.7 loops pandas for-loop