有没有办法获得 Pandas 中不同分组的 vlaue_counts

问题描述

我们有多个 xml 文件 (xmlFileN.xml) 以层次结构排列。每个 xml 文件由 3 个标签索引/标识:L1x、L2x、L3x。

L10/def/xmlFileN.xml      -> mandatory
L10/L20/def/xmlFileN.xml  -> mandatory if L3x is not present
L10/L21/def/xmlFileN.xml
L10/L21/L30/xmlFileN.xml  -> not mandatory
L10/L21/L31/xmlFileN.xml

L11/def/xmlFileN.xml
L11/L20/def/xmlFileN.xml
L11/L21/def/xmlFileN.xml
L11/L21/L30/xmlFileN.xml
L11/L21/L31/xmlFileN.xml

从最里面的 xml 中选取值,如果最里面没有标签,则检查它的根,依此类推,直到 L1x/def/xmlFileN.xml

理想情况下,我们希望所有内部 xmlFiles 都为空(通过提供出色的认值)

问题:为了实现这一点,我们希望了解有多少标签在不同级别发生变化。

第一种方法:蛮力。将所有 xml Tag-Val 对读入 python 嵌套字典。然后通过手动交换嵌套字典的级别,计算每个标签的唯一值的数量

Unique_values[L1x] = a
Unique_values[L1N][L2x] = b
Unique_values[L1N][:][L3x] = c

这我可以改进 bu 创建数据帧的嵌套字典(以 L1 和 L2 作为键),以 xml 标签为索引,L3x 作为列,类似地,另一个以 L1 和 L3 为键的数据帧嵌套字典。 现在,我正在将所有标签读入一个数据帧,然后选择与前两个字典相对应的内容

dataframe columns:
<row_index>,<L1>,<L2>,<L3>,<tag>,<val>

是否有任何更简单的方法生成(除了为每个 L1/L2/L3 组合生成数据?)唯一计数并发布到具有以下列的单个 Excel 表中:

tag
#changes across all L1*
changes across L1*/L2*/L30
changes in L1*/L2*/L31
changes in L1*/L2*/L32
L1_name
changes in L1/L2*/L30
changes in L1/L2*/L31
changes in L1/L2*/L32
total changes in L1/*/*

直到 L1_name 的所有列都跨行合并。例如:

Sample excel screenshot

我正在寻找某种分组或一些类似的操作,并可以选择计算每组唯一值的数量并将所有输出放入一个 Excel 表中(现在我正在将数据框一个一个地组合起来,寻找更紧凑、更惯用的方式)。

如果需要更多说明,请告诉我。

[编辑] 添加新图像来解释我当前的方法 蓝色背景为原始数据。 浅粉色是 [L1][][L3] 的唯一值(收集给定 L1 的 L3x 中的所有值) 灰色背景是 [def]((收集所有 L1x 的认值)和 [][*][L3](收集 L3x 中的所有值,忽略 L1 和 L2)的唯一值。 砖红色表是我的预期输出

Current method in table for one tag

如果我能得到值计数,那就太好了,但即使我能得到不同值的数量而不是值计数,也足够了。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)