获取唯一列值时的属性错误

时间:2017-06-26 18:01:20

标签: pandas dataframe attributeerror

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

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'对象没有属性" placename"。好像"地名"不应该是一个字符串,当我把它替换为
时 city_list = state_df.cityname.unique(),它起作用,其中cityname(没有"")是原始csv文件中列的实际标题。由于我想让我的功能多才多艺,我想找到一种方法来处理这种情况,这样我就不必手动改变" placename"的内容。每一次。

非常感谢您的帮助!

谢谢

1 个答案:

答案 0 :(得分:1)

点运算符.保留用于访问对象的属性。 pandas非常适合通过属性访问列名。但你不能做df."myplace"

之类的事情

将您的代码更改为:

state_df[placename].unique()

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