首页 > 解决方案 > 如何将 Python Fuction 数据导入 Pandas Data-frame

问题描述

我在下面有一个代码,它只是从ldapsearch命令中获取数据,现在我正在考虑使用 pandas 将数据转换为所需的格式,但我不知道如何将 python 函数数据访问到 Pandas DataFrame 中。

代码 :

import subprocess

def UserID():
    LDP = "ldapsearch -h ldap.example.com -xLLLb 'ou=Personal,ou=People,ou=udalt' uid fullName"
    proc = subprocess.Popen(LDP, shell=True, stdout=subprocess.PIPE)
    info_str = proc.stdout.read().decode('utf8')
    str_info = info_str.splitlines()
    prefixes = ["uid:", "fullName:"]
    for line in str_info:
        if line.startswith(tuple(prefixes)):
            lines = line
            for line in lines.splitlines():
                     print(line, end=' ' if line.startswith("uid:")  else "\n")
UserID()

结果:

uid: khati06610 fullName: Anik sa
uid: khati06648 fullName: Vikur Doom
uid: khati06663 fullName: Gopi sa
uid: khati06718 fullName: Jeff kana
uid: khati10131 fullName: Peter j
uid: khati10152 fullName: Mie sean

来自熊猫处理的所需数据将是:

User ID        User Name
khati06610    Anik sa 
khati06648    Vikur Doom
khati06663    Gopi sa 
khati06718    Jeff kana
khati10131    Peter j 
khati10152    Mie sean

标签: pythonpython-3.xpandas

解决方案


试试这个,但最好的方法是使用python-ldap它提供面向对象的 API 来访问 LDAP 并避免字符串解析的开销。

import re
import pandas as pd

search_ = re.compile("uid:\s(.*)\sfullName:\s(.*)")

print(
    pd.DataFrame(
        [{"User ID": u, "User Name": n} for u, n in search_.findall(line)]
    )
)

      User ID   User Name
0  khati06610     Anik sa
1  khati06648  Vikur Doom
2  khati06663     Gopi sa
3  khati06718   Jeff kana
4  khati10131     Peter j
5  khati10152    Mie sean

推荐阅读