0

私は現在、PDF の大規模なセットを解析し、それらが属するモジュールに基づいてハードウェア アドレスのリストを抽出しています。アイデアは、将来のコードのリバースを支援する依存関係図を作成することです。問題の性質が非常に大きいため、列に関数を適用するのが非常に簡単であるため、パンダをメインのデータベース API として使用しています。

データベース データベースは、アドレスとモジュール名の 2 つのフィールドで構成されます (以下を参照)。各レコードは、メンバーであるモジュールに関して、単一の (そして一意の) アドレスのメンバーシップを詳述します。Associate Modules フィールドは List 型で、さまざまな数の要素を持つことができます。ただし、アドレスの値は 1 つしかありません。

問題 理想的には、最適化された 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     *
***********************************

ご協力いただきありがとうございます。

4

1 に答える 1

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()メソッドを使用します。おそらくもっと洗練された方法がありますが、それほど醜くはありません。

于 2013-03-12T15:49:16.797 に答える