アーリア・シン:
私は2つのデータフレームを持っています
1列とDF1
{0:[1,2,3,4,5,6,7,11]}
2 COLとDF2
{0:[100,4,6,7],1:[1,3,4,7]}
私はDF2のいずれかの列の値でDF1から行を削除する必要があります
ressultデータフレーム
df3 = [2,5,11]
kederrac:
あなたが使用することができpandas.DataFrame.isinを:
df1[~df1[0].isin(df2.values.flatten())]
出力:
大規模なデータフレームのために、私は次のような単純なベンチマークを行っています。
import numpy as np
from simple_benchmark import BenchmarkBuilder
b = BenchmarkBuilder()
@b.add_function()
def anky_91(t):
df1, df2 = t
df1[~df1[0].isin(df2.stack())]
@b.add_function()
def kederrac(t):
df1, df2 = t
df1[~df1[0].isin(df2.values.flatten())]
@b.add_function()
def yatu(t):
df1, df2 = t
df1[~df1.squeeze().isin(df2.stack())]
@b.add_arguments('NUmber of rows ind df')
def argument_provider():
for exp in range(2, 18):
size = 2**exp
df1 = pd.DataFrame(np.random.randint(0, size // 10 or 10,size= (size , 1)))
df2 = pd.DataFrame(np.random.randint(0, size // 10 or 10 ,size=(size , 2)))
yield size, (df1, df2)
r = b.run()
r.plot()