获取唯一列值时出现属性错误

Attribute Error when getting unique column values

我是 Python 和 Pandas 的新手。我正在尝试编写一个函数来获取我的列值的唯一列表。我的函数如下所示,其中 "placename" 是我想要获得唯一值的属性。 'placename'应该作为字符串参数传递,对应csv文件的header。

def get_city_list(state, type, placename):

     city_dir = os.path.join(baseDir, type + ".csv")
     city_df = pd.read_csv(city_dir, quotechar = '"', skipinitialspace = True, sep = ",") 

     state_df = city_df.loc[city_df["state"] == state] 

     city_list = state_df.placename.unique()

     return city_list

然而,当我调用这个函数时,它抛出一个属性错误,说 'DataFrame' object 没有属性 "placename"。似乎 "placename" 不应该是一个字符串,当我将它替换为
city_list = state_df.cityname.unique(),有效,其中 cityname(不带“”)是原始 csv 文件中列的实际 header。由于我想让我的功能变得通用,所以我想找到一种方法来处理这种情况,这样我就不必每次都手动更改"placename"的内容。

非常感谢您的帮助!

谢谢

点运算符 . 保留用于访问对象的属性。 pandas 足以使列名可通过属性访问。但是你不能做像 df."myplace"

这样的事情

将您的代码更改为:

state_df[placename].unique()

这样,您将 placename 传递给 getitem 方法。