You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计Pandas DataFrame中apply调用create_url函数的次数?

嘿,这个计数需求在Python里其实有好几种简单的实现方式,完全适配你用Pandas apply的场景,我给你列几个实用的方案:

方案1:用全局变量快速实现

这是最直接的方式,和你C++里的思路最接近,只需要定义一个全局计数器,在函数内部更新它:

# 初始化计数器
call_count = 0

def create_url(row):
    global call_count
    # 每次调用计数器加1
    call_count += 1
    # 这里放你原本的URL生成逻辑
    # 比如 return f"https://your-dashboard.com/{row['id']}"
    return "生成的URL"

# 你的原有业务代码
df = pd.read_csv("nodos_results3.csv")
df['URL_dashboard'] = df.apply(create_url, axis=1)
df.to_csv('nodos_results4.csv', index=False)

# 查看最终调用次数
print(f"create_url 一共被调用了 {call_count} 次")

方案2:用闭包封装计数器(避免全局变量污染)

如果不想用全局变量(避免影响其他代码),闭包是更优雅的选择,把计数器封装在嵌套函数内部:

def build_url_creator():
    count = 0
    def create_url(row):
        nonlocal count
        count += 1
        # 你的URL生成逻辑
        return "生成的URL"
    # 返回生成函数和获取计数的方法
    return create_url, lambda: count

# 使用闭包
create_url, get_call_count = build_url_creator()

df = pd.read_csv("nodos_results3.csv")
df['URL_dashboard'] = df.apply(create_url, axis=1)
df.to_csv('nodos_results4.csv', index=False)

print(f"create_url 一共被调用了 {get_call_count()} 次")

方案3:用类封装(适合复杂逻辑扩展)

如果你的create_url函数逻辑后续可能需要扩展,用类来封装计数器和函数逻辑会更清晰:

class URLGenerator:
    def __init__(self):
        self.call_count = 0
    
    def create_url(self, row):
        self.call_count += 1
        # 你的URL生成逻辑
        return "生成的URL"

# 实例化类
generator = URLGenerator()

df = pd.read_csv("nodos_results3.csv")
df['URL_dashboard'] = df.apply(generator.create_url, axis=1)
df.to_csv('nodos_results4.csv', index=False)

print(f"create_url 一共被调用了 {generator.call_count} 次")

额外小提示

如果你的create_url是对每一行都执行(没有条件跳过的逻辑),那其实调用次数就等于DataFrame的行数,直接用df.shape[0]就能快速得到结果,但上面的方案能准确统计函数实际被执行的次数(比如函数内部有判断跳过某些行的情况)。

内容的提问来源于stack exchange,提问作者Ellie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:35:25