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

如何使用lambda函数对Pandas DataFrame按行统计指定字符出现次数?

错误原因

你出现语法错误的核心是混淆了pandas.DataFrame.apply的工作逻辑:

  • 当指定axis=1时,apply会自动遍历DataFrame的每一行,将整行数据作为参数传入你指定的处理函数,完全不需要额外手写for循环遍历行
  • 你写的for x in range(...)属于多余的生成器表达式,同时df.iloc[0]取的是第一行的具体数据,不是整数索引,本身就不能作为range()的入参,双重问题导致语法报错

正确写法(沿用你已定义的count_P函数)

直接把函数名传给apply,同时指定axis=1即可:

df['Attendance'] = df.apply(count_P, axis=1)

如果你要保留lambda写法也可以,属于等价但冗余的写法:

df['Attendance'] = df.apply(lambda x: count_P(x), axis=1)

更高效的推荐实现

不需要自定义循环函数,用pandas向量化操作效率更高,尤其适合数据量较大的场景:

df['Attendance'] = df.eq('P').sum(axis=1)

逻辑说明:df.eq('P')会将整个DataFrame中值等于'P'的位置替换为True,其余为False;sum(axis=1)按行求和时,True会被视为1、False视为0,直接得到每行'P'的出现次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 19:06:08