如何将LDAP查询结果转换为指定结构的Pandas DataFrame
Pandas处理ldapsearch返回结果的实现方法
Pandas没有专门针对ldapsearch返回结构的原生处理方法,但可以通过简单的逻辑转换得到你需要的结构化DataFrame,两种常用实现方案如下:
方案1:预处理原始LDAP查询结果(性能最优)
拿到search_s返回的结果后,先对每条数据做结构转换,再生成DataFrame即可:
import pandas as pd # 你的原有LDAP查询代码不变,得到ldapsearch结果后执行以下逻辑 processed_data = [] for dn, attr_dict in ldapsearch: row = {"dn": dn} # 遍历属性字典,取出每个属性列表的第一个元素(LDAP属性默认是多值返回列表) for attr_name, attr_value in attr_dict.items(): # 兼容属性为空的场景,空值设为None row[attr_name] = attr_value[0] if attr_value else None processed_data.append(row) # 直接生成目标格式的DataFrame df = pd.DataFrame(processed_data)
方案2:基于已生成的0、1列DataFrame转换
如果已经通过pd.DataFrame(ldapData)生成了默认列名的DataFrame,可以直接展开属性列:
# 先给现有列重命名 dfLdap.columns = ["dn", "attr_dict"] # 展开属性字典列,每个属性取列表第一个元素后和dn列合并 df = pd.concat([ dfLdap["dn"], pd.json_normalize(dfLdap["attr_dict"]).applymap(lambda x: x[0] if x else None) ], axis=1)
注意事项
如果业务中存在多值的LDAP属性,可以调整取值逻辑,比如用','.join(attr_value)把多值拼接为字符串存储。
内容的提问来源于stack exchange,提问作者yodog
相关产品推荐
相关产品推荐

