1

パンダを使用して、フラットなデータ ソースでデータ分析を実行しようとしています。具体的には、私が達成しようとしているのは、SQL の Union All クエリに相当するものです。

read_csv() メソッドを使用してデータを入力していますが、出力には一意の整数インデックスと約 30 以上の列があります。

これらの列のうち、いくつかには識別情報が含まれていますが、その他にはデータが含まれています。

合計で、最初の 6 列には、エントリを一意に識別する識別情報が含まれます。これらの 6 つの列に続いて、値を参照する一連の列 (A、B... など) があります。これらの列の一部はセットでリンクされています。たとえば、(A、B、C) は一緒に属し、(D、E、F) は一緒に属しています。

ただし、(D,E,F) は次のように (A,B,C) にも関連付けられます ((A,D),(B,E),(C,F))。私がやろうとしているのは、次のようなデータセットを取得することです:

(id1,id2,id3,id4,id5,id6,A,B,C,D,E,F) 

そして以下を返します

((id1,id2,id3,id4,id5,id6,A,B,C),
 (id1,id2,id3,id4,id5,id6,D,E,F))

ここでは、A と D がリンクされているため、同じ列に含まれています。

(これは単純化したものであり、データセット全体で約 1,200 万の一意の組み合わせがあることに注意してください)

マージ、連結、および結合機能を使用しようとしましたが、役に立ちませんでした。SQLデータベースでは、この問題を解決するためにユニオンオールクエリ(確かに非常に遅い)を実行するだけでよいため、何か重要なものが欠けているように感じます。

この段階では、動作するサンプル コードはありません。

パンダのドキュメントのいくつかに基づいて、この問題を記述する別の方法。

left = key lval
right = key rval
merge(left, right, on=key) = key, lval, rval

代わりに私が欲しい:

left = kev, lval
right = key, lval
union(left, right) = key, lval
                     key, rval

このために新しいインデックス キー値を作成する必要があるかどうかはわかりません。

4

1 に答える 1