我正在尝试从包含员工的CSV文件中创建Employee类的多个实例,并从静态方法中提取。从现在起我就可以获得这些员工的列表,但我想要的是立即将这些值分配给实例变量。
这是我的代码:
class Employees():
nums_of_employees = 0
def __init__(self, name, last, salary):
self.name = name
self.last = last
self.salary = salary
Employees.nums_of_employees +=1
def data(self):
print(f'Name: {self.name} LastName: {self.last} Salary: {self.salary}')
@staticmethod
def extract_csv():
new_emp = []
with open('Employees.csv', 'r') as data_file:
csv_data = csv.DictReader(data_file)
next(csv_data)
for line in csv_data:
new_emp += line['Name'], line['Last'], line['Salary']
return new_emp
答案 0 :(得分:1)
假设Employee接受3个参数(姓名,姓氏和工资),您可以替换
new_emp += (line['Name'], line['Last'], line['Salary'])
与
new_emp.append(Employee(line['Name'], line['Last'], line['Salary']))
为您迭代的每一行创建一个新的Employee实例,并将其附加到new_emp
列表。
答案 1 :(得分:0)
希望这有帮助。
您可以使用pandas.DataFrame.sample提取行方式数据。
这是上面链接的官方文档中的示例
生成示例系列
>>> s = pd.Series(np.random.randn(50))
>>> s.head()
0 -0.038497
1 1.820773
2 -0.972766
3 -1.598270
4 -1.095526
从系列中提取3个随机元素:
>>> s.sample(n=3)
27 -0.994689
55 -1.049016
67 -0.224565
dtype: float64
您还可以在pandas的DataFrame上使用它,以提取整行中的元素。