Python函数传参问题:Pandas指定列统计唯一值报错
解决Pandas函数中动态列名的索引问题
你遇到的问题很典型——用.访问列的时候,Python会把column当成一个固定的属性名,而不是你传入的字符串变量。要解决这个,只需要把点式索引换成方括号索引就行,因为方括号可以接受字符串变量来动态定位列。
修改后的函数代码
def uniques(column): count = data.groupby(column)[column].count() print(count)
这里把.column改成[column],就能让Pandas正确识别你传入的列名字符串了:groupby(column)完成分组后,用[column]指定要统计的目标列,再调用count()就可以得到每个唯一值的出现次数。
额外优化建议
- 避免全局变量依赖:你的函数直接用了全局的
data,最好把DataFrame也作为参数传入,让函数更通用、复用性更强:
def uniques(dataframe, column): count = dataframe.groupby(column)[column].count() print(count)
调用示例:uniques(your_dataframe, 'c_type')
- 更简洁的统计方式:如果你的需求只是获取某列的唯一值总数(不需要每个值的具体出现次数),直接用
nunique()会更高效:
def uniques(dataframe, column): total_unique = dataframe[column].nunique() print(f"列「{column}」的唯一值数量:{total_unique}")
内容的提问来源于stack exchange,提问作者user3088202
相关产品推荐
相关产品推荐

