gpt4 book ai didi

python - 使用 pandas 在 python 中打乱 excel 数据

转载 作者:行者123 更新时间:2023-12-01 06:39:12 25 4
gpt4 key购买 nike

这是我第一次尝试用Python编写代码。我正在尝试解决这里的一个问题。我在 Excel 中有一些数据,我使用 pandas 将其导入到数据框中,并进一步将其转换为列表以执行某些操作。我根据员工的经验对他们进行了分类。之后我得到以下数据:

index   emp_code    org_dept    new_dept    combo_dept  possibility grade   grade_marker    years_dept  flag<br/>
1 1028 D3 D2 D3D2 1 B+ 2 6.4 0
2 1028 D3 D1 D3D1 1 B+ 2 6.4 0
3 1039 D4 D2 D4D2 1 B+ 2 6.4 0
4 1039 D4 D1 D4D1 1 B+ 2 6.4 0
5 1007 D1 D3 D1D3 1 B+ 2 6.3 0
6 1007 D1 D4 D1D4 1 B+ 2 6.3 0
7 1010 D1 D3 D1D3 1 B 1 6.3 0
8 1010 D1 D4 D1D4 1 B 1 6.3 0
9 1012 D2 D3 D2D3 1 A+ 4 6.3 0
10 1012 D2 D4 D2D4 1 A+ 4 6.3 0
11 1017 D2 D3 D2D3 1 B+ 2 6.3 0
12 1017 D2 D4 D2D4 1 B+ 2 6.3 0
13 1034 D4 D2 D4D2 1 A 3 6.1 0
14 1034 D4 D1 D4D1 1 A 3 6.1 0
15 1001 D1 D3 D1D3 1 A+ 4 5.5 0
16 1001 D1 D4 D1D4 1 A+ 4 5.5 0
17 1016 D2 D3 D2D3 1 A 3 5.2 0
18 1016 D2 D4 D2D4 1 A 3 5.2 0
19 1033 D4 D2 D4D2 1 A 3 5.2 0
20 1033 D4 D1 D4D1 1 A 3 5.2 0
21 1022 D3 D2 D3D2 1 A+ 4 5.1 0
22 1022 D3 D1 D3D1 1 A+ 4 5.1 0

如果可能性为 1,我的目标是将员工从原来的部门移动到新部门。现在的情况是,例如,员工 1028 从 D3 移动到 D2,那么员工 1012 应该从 D2 移动到 D3,以维持数量。然后我可以将这 2 条记录的标志设置为 1。

我使用的是 python 3.7

你能帮我写一下代码吗?

最佳答案

所以这里我们迭代 df 中的所有员工并将他们移动到新部门,然后尝试找到其他员工并移动他以维护号码:

import pandas as pd


class Employee(object):
def __init__(self, row):
self.row = row
self.moved = False
self.org_dept = row['org_dept']


def employee_is_moved(emp_code):
""" Return True if employee is already moved """
for e_ in employees:
if e_.row['emp_code'] == emp_code and e_.moved:
return True


df = pd.read_csv('data.csv', delimiter=';')

employees = []
for index, row in df.iterrows():
employees.append(Employee(row))

# Move employees to new departments
for e in employees:
if all([e.row['possibility'] == 1,
not e.moved,
not employee_is_moved(e.row['emp_code'])]):
# Move employee to new department
print(f"Move employee index: {e.row['index']} from Dep. {e.row['org_dept']} to {e.row['new_dept']}")
e.moved = True
e.row['org_dept'] = e.row['new_dept']

# Move another employee to maintain the number
for e1 in employees:
if all([e1.row['possibility'] == 1,
not e1.moved,
e1.row['org_dept'] == e.row['org_dept'],
e1.row['new_dept'] == e.org_dept,
not employee_is_moved(e1.row['emp_code'])]):
print(f"Move employee (to maintain number) index: {e1.row['index']} from Dep. {e1.row['org_dept']} to {e1.row['new_dept']}")
e1.moved = True
e1.row['org_dept'] = e.row['new_dept']
break

# Save result back to DF
df = pd.DataFrame([e.row for e in employees])

输出:

enter image description here

关于python - 使用 pandas 在 python 中打乱 excel 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59535089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com