我想这转换这结果这下面的窗口命令到一个Pandas Dataframe .
原始数据在windows机器上使用此命令生成
wmic进程获取标题、进程ID、父进程ID、命令行、创建日期、内核模式时间、用户模式时间、线程计数、句柄计数、工作集大小、峰值工作集大小、虚拟大小、峰值虚拟大小、页面错误、页面文件使用、峰值页面文件使用、读取操作计数、写入操作计数、其他操作计数/format:rawxml
使用以下代码
with f.open("RunningProcess.xml") as praw:
etree = et.parse(praw)
xroot = etree.getroot()
nprop = []
for property in xroot.iter("PROPERTY"):
xnames = property.get("NAME")
nprop.append(xnames)
npropf = pandas.DataFrame(index=nprop)
rprows = []
data = []
inner = {}
for child in xroot.iter("PROPERTY"):
for gchild in child.iterfind('VALUE'):
inner[gchild.tag] = gchild.text
data.append(inner)
rprows.append(pandas.DataFrame(data))
data = []; inner = {}
finaldf = pandas.concat(rprows, sort=False).reset_index(drop=True)
finaldf.index = nprop
rpdfhtml = finaldf.to_html(index=True, header=True, border=1)
我得到这个结果
first 39 lines of output
我愿意
- 将前20个索引行转换为列(WriteOperationCount的标题)
- 将值列改为行。
2条答案
按热度按时间ru9i0ody1#
欢迎!这是一个有趣的问题。这并不完美,但希望它能有所帮助
我希望尽量避免对任何感兴趣的列进行硬编码。
假设-此文件将具有可预测的字段名称模式。
我使用了
xml.etree.ElementTree
,我发现这是一个直接的库引用xml文件
创建扁平化的DataFrame。我个人发现这比完全在xml中提取XML更容易解析
首先创建一个展开列表
这将产生类似于以下的结果
转换为数据框
重命名列以使Dataframe更易于使用
创建感兴趣列的列表
创建每个感兴趣列的Dataframe列
按列将 Dataframe 连接在一起
使用先前创建的列表添加列名
您将得到一个如下所示的数据框架
我想说这些步骤不可能是最优雅的,但希望它是清楚的发生了什么。
4xrmg8kj2#
您是否有任何与WMI进程相关的工作文档或git hub链接要共享