用户权限数据转换为用户组列表(3/3) - Excel PY公式

最近Excel圈里的大事情就是微软把PY塞进了Excel单元格,可以作为公式使用,轻松用PY做数据分析。系好安全带,老司机带你玩一把。

用户权限数据转换为用户组列表(3/3) - Excel PY公式_第1张图片

实例需求:如下是AD用户的列表,每个用户拥有该应用程序的只读或读写权限,现在需要创建新的AD用户组,并根据用户当前的权限,将这些用户添加到相应的组中。

当前数据集:

Safe UserName Read permissions RW permissions
Safe1 User1 Yes Yes
Safe1 User2 Yes No
Safe1 User3 Yes Yes
Safe1 User4 Yes No
Safe2 User1 Yes Yes
Safe2 User2 Yes No
Safe2 User3 Yes Yes
Safe2 User4 Yes No

整理后输出数据集:

Safe AD Group Userlist
Safe1 Safe1-ReadGroup User1,User2,User3,User4
Safe1 Safe1-RWGroup User1,User3
Safe2 Safe2-ReadGroup User1,User2,User3,User4
Safe2 Safe2-RWGroup User1,User3
df=xl("Table1[#全部]", headers=True)
rw_df = df[df['RW permissions'] == 'Yes'].drop(columns=['RW permissions'])
grp_rw = rw_df.groupby(['Safe'])['UserName'].apply(','.join).reset_index()
grp_rw['AD Group'] = grp_rw['Safe'] + '-RWGroup'
r_df = df[df['Read permissions'] == 'Yes'].drop(columns=['Read permissions'])
grp_r = r_df.groupby(['Safe'])['UserName'].apply(','.join).reset_index()
grp_r['AD Group'] = grp_r['Safe'] + '-ReadGroup'
df_output = pd.concat([grp_r, grp_rw], axis=0).rename(columns={'UserName': 'UserList'})[['Safe', 'AD Group', 'UserList']]

【代码解析】
第1行代码读取Excel表作为DataFrame。
第2行代码过滤写权限为Yes的行。
第3行代码分组并合并UserName列。
第4行代码添加分组名称列。
第5行代码过滤读权限为Yes的行。
第6行代码分组并合并UserName列。
第7行代码添加分组名称列。
第8行代码合并读写两个DataFrame。
第9行代码重命名列并选择需要的列。

用户权限数据转换为用户组列表(3/3) - Excel PY公式_第2张图片

小结:
Python的Pandas库可以便捷地处理Excel表数据。通过filter和groupby可以进行分组,concat可以实现表连接,apply方法可以在分组上执行操作,生成自定义列。

你可能感兴趣的:(数据清洗,PY,数据,PY公式,数据合并,数据清洗,用户列表,PY,Excel)