我正在通过一大堆PDF解析我的方式,并根据它们所属的模块提取硬件地址列表。我们的想法是构建一个依赖关系图,这将有助于将来任何代码转换。 由于问题非常大,我使用pandas作为主要的数据库API,因为它很容易将功能应用于列。
数据库 数据库包含两个字段,即地址和模块名称(见下文)。 每个记录详细说明单个(和唯一)地址的成员资格,其中包含其成员的模块。 “关联模块”字段的类型为“列表”,可以包含不同数量的元素。但是Address只有一个值。
问题 理想情况下,使用优化的Pandas API,如何将下面的“RawTable”转换为 “依赖表”?代码示例非常感谢。
<Current Database>
xxxxx*[Pandas::RawTable]******
* Address * Associate Modules *
******************************
* 1000 * ["1A","2A","3A"] *
* 1001 * ["2A","4A","5A"] *
* 1002 * ["1A", "4A"] *
******************************
<Future Database>
******[Pandas:: DependencyTable****
* Associate Modules * Address *
***********************************
* "1A" * 1000 *
* "1A" * 1002 *
* "2A" * 1000 *
* "2A" * 1001 *
* "3A" * 1000 *
* "4A" * 1001 *
* "4A" * 1002 *
* "5A" * 1001 *
***********************************
感谢您的帮助。
答案 0 :(得分:0)
看起来模块作为一列列表加载。
In [1]: df = DataFrame(
{'Address': [1000, 1001, 1002],
'Associate Modules': [['1A', '2A', '3A'],
['2A', '4A', '5A'],
['1A', '4A']]})
我首先将相关模块拆分为单独的列。
In [2]: modules = df['Associate Modules'].apply(Series)
In [3]: modules.index = df['Address']
In [4]: modules
Out[4]:
0 1 2
Address
1000 1A 2A 3A
1001 2A 4A 5A
1002 1A 4A NaN
然后堆叠DataFrame,并删除我们的虚拟列索引。
In [5]: result = modules.stack()
In [6]: result.index = result.index.get_level_values(0)
In [7]: result
Out[7]:
Address
1000 1A
1000 2A
1000 3A
1001 2A
1001 4A
1001 5A
1002 1A
1002 4A
如果要将Address作为正确的列而不是索引,请使用reset_index()
方法。可能有一种更时尚的方式,但不是太难看。