编写Pandas DataFrame列唯一值排序列表函数时遇属性错误求助
问题分析与修复方案
嘿,我帮你梳理下代码里的几个问题,然后给你修正后的版本:
首先看你踩的几个坑:
- 错误1:
pd.df()是不存在的:pandas里没有这个构造方法,你要处理的是函数参数里传入的df,完全不需要重新创建空DataFrame - 错误2:
list.sort()返回None:列表的sort()方法是原地修改列表本身,它的返回值是None,这会导致你的函数返回空值,应该用sorted(list)来生成并返回一个新的排序列表 - 另外,
f.loc[:,col]可以简化成df[col],写法更简洁直观
下面是修正后的代码,完全符合你“不使用任何模块方法”的要求,纯手动实现去重+排序:
import pandas as pd def list_col(df, col): """Returns a sorted list of unique values from the specified DataFrame column""" unique_vals = [] # 遍历目标列的每一个元素 for val in df[col]: # 只添加未出现过的值 if val not in unique_vals: unique_vals.append(val) # 返回排序后的新列表 return sorted(unique_vals)
举个测试例子验证下:
# 测试用DataFrame test_df = pd.DataFrame({"fruit": ["apple", "banana", "apple", "orange", "banana", "grape"]}) print(list_col(test_df, "fruit")) # 输出:['apple', 'banana', 'grape', 'orange']
内容的提问来源于stack exchange,提问作者Captain Patches
相关产品推荐
相关产品推荐

