パンダを使用して、フラットなデータ ソースでデータ分析を実行しようとしています。具体的には、私が達成しようとしているのは、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
このために新しいインデックス キー値を作成する必要があるかどうかはわかりません。