gpt4 book ai didi

来自经理和员工 ID 的 python 层次结构

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:15 26 4
gpt4 key购买 nike

我有一个包含两列的 csv:员工 ID 'eid' 和经理的员工 ID 'mid'。尝试获取 python 代码,为每个员工添加显示从经理一直到 CEO 的员工 ID 的列。 CEO 的员工 ID 为 1。最终我想将结果写回 csv。

所以数据看起来像:

eid,    mid
111, 112
113, 112
112, 114
114, 115
115, 1

我期待这样的输出。请注意,虽然没有员工拥有超过 4 级的经理,但我还想学习动态命名列的 python。

eid,    mid,    l2mid   l3mid   l4mid
111, 112, 114, 115, 1
113, 112, 114, 115, 1
112, 114, 115, 1
114, 115, 1
115, 1

我对编码非常陌生,并试图自学,但总是陷入困境。我的问题:1) 我试图使用一个 for 语句,该语句在给定的行中获取 mid ,然后找到该经理的经理,依此类推,直到找到首席执行官。我一直在尝试这样做:

df = pd.read_csv('employee.csv') 
if mid =! 1
for i in df:
df.['l2mid'] = df.loc[df.eid == [i], [mid]]

也许我正在倒退,我应该尝试按经理对所有员工进行分组?该代码有何不同?

我在C#中看到了解决方案和 sql ,我已经看到了构建 trees 的解决方案和 json 。我真的很感谢任何帮助和鼓励。

更新:下一步是添加国家/地区列 - 请参阅:entry here

最佳答案

我相信有更好的解决方案,但这可行。我用零填充了空。

a = []
for index, row in df.iterrows():
res = df[df['eid']==row['mid']]['mid'].values
a.append(0 if not res else res[0])
df['l2mid'] = a

a = []
for index, row in df.iterrows():
res = df[df['eid']==row['l2mid']]['mid'].values
a.append(0 if not res else res[0])
df['l3mid'] = a

a = []
for index, row in df.iterrows():
res = df[df['eid']==row['l3mid']]['mid'].values
a.append(0 if not res else res[0])
df['l4mid'] = a

df
# output :
# eid mid l2mid l3mid l4mid
# 0 111 112 114 115 1
# 1 113 112 114 115 1
# 2 112 114 115 1 0
# 3 114 115 1 0 0
# 4 115 1 0 0 0

您可以为例程定义函数。

def search_manager(target_column, new_column):
a = []
for index, row in df.iterrows():
res = df[df['eid']==row[target_column]]['mid'].values
a.append(0 if not res else res[0])
df[new_column] = a

search_manager('mid', 'l2mid')
search_manager('l2mid', 'l3mid')
search_manager('l3mid', 'l4mid')

关于来自经理和员工 ID 的 python 层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45929048/

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