使用数据框

时间:2018-04-05 19:54:07

标签: python dataframe

我正在编写一个类定义来完成以下任务:

1)构造函数:接受.csv文件的文件名作为参数,从文件中的信息创建数据框并将其永久存储在对象中,设置数据的列名frame,将索引设置为个人姓名。内部数据框是私有属性 - 请勿更改此内容。

2)__ in_frame :私有方法,根据名称检查数据框中是否存在联系人(您不需要修改它,但您可能需要在其他方法中使用它) )

3)get_contact_info :接受名称作为参数,返回包含该联系人的电话号码和电子邮件的列表,您必须考虑用户请求不存在的联系人的情况

4)get_phone :接受名称作为参数,返回该联系人的电话号码,您必须考虑用户请求不存在的联系人的情况

5)get_email :接受名称作为参数,返回该联系人的电子邮件,您必须考虑用户请求不存在的联系人的情况

6)get_all_phones :不带参数,返回包含数据集中所有电话号码的系列

7)get_all_emails :不带参数,返回包含数据集中所有电子邮件的系列

8)add_change_contact :将名称,电话和电子邮件作为参数,如果数据框尚未存在,则应将联系人添加到数据框中,否则应修改现有联系人

9)delete_contact :接受名称作为参数并从数据框中删除联系人,您必须考虑用户请求不存在的联系人的情况

10)__str __ :返回内部数据框的字符串表示

以下是我的以下代码:

import pandas as pd

class Contact_Frame:

 def __init__(self, filename):
  self.__frame = pd.read_csv(filename)
  self.__frame.columns = ['Name','Phone','Email']
  self.__frame.set_index('Name')

 def __in_frame(self, name): 
   return name in self.__frame.index 

 def get_contact_info(self, name):
    if(__in_frame(name)):
      return self.__frame[name]

 def get_phone(self, name):
   if(__in_frame(name)):
     return self.__frame[name:'Phone']

 def get_email(self, name):
     return self.__frame[name:'Email']

 def get_all_phones(self):
     return self.__frame('Phone')

 def get_all_emails(self):
   return self.__frame('Email')

 def add__change_contact(self, name, phone, email):
   self.fame[name] = [phone, email]

 def delete_contact(self, name):
   if(__in_frame(name)):
     self.__frame.drop(name)

 def __str__(self):
    print (self.__frame)

当我运行这些时,我得到了几个错误,我的代码中存在什么算法/语法错误阻止我的函数运行?

1 个答案:

答案 0 :(得分:0)

要从该类中访问类变量和函数,必须使用self。

例如,在delete_contact中你有:

if(__in_frame(name)):

__ in_frame未在功能范围内定义。将其替换为

if(self.__in_frame(name)):