私は使用しpandas
groupby
ていて、以下を実装する方法を考えていました:
データフレームAとBにはインデックスを付けるための同じ変数がありますが、Aには20の一意のインデックス値があり、Bには5があります。
インデックスがBではなくAに存在する行を含むデータフレームCを作成したいと思います。
Bの5つの一意のインデックス値がすべてAに存在すると仮定します。この場合、Cには、BではなくAのインデックス値に関連付けられた行のみが含まれます(つまり、15)。
内側、外側、左、右を使用してこれを行わないでください(私が何かを読み間違えた場合を除きます)。
SQLではこれを次のように行う可能性がありますwhere A.index <> (not equal) B.index
私の左利きの解決策:
a)各データセット(xとyなど)からそれぞれのインデックス列を取得します。
def match(x、y、compareCol):
"""
x and y are series
compare col is the name to the series being returned .
It is the same name as the name of x and y in their respective dataframes"""
x = x.unique()
y = y.unique()
""" Need to compare arrays x.unique() returns arrays"""
new = []
for item in (x):
if item not in y:
new.append(item)
returnADataFrame = pa.DataFrame(pa.Series(new, name = compareCol))
return returnADataFrame
b)データセットAでこれに対して左結合を実行します。
私の要素ごとの比較は、やる気のない雑草のカメのように遅いと合理的に確信しています。