Python 如果任何行值位于另一个数据帧中,请从数据帧中删除行
我有两个数据帧 带一列的df1Python 如果任何行值位于另一个数据帧中,请从数据帧中删除行,python,pandas,Python,Pandas,我有两个数据帧 带一列的df1 {0:[1,2,3,4,5,6,7,11]} 具有两个列的df2 {0:[100,4,6,7],1:[1,3,4,7]} 我必须从df1中删除df2中任何列中有值的行 ressult数据帧 df3 = [2,5,11] 堆叠第二个数据帧并对第一列执行isin,然后反转 df1[~df1[0].isin(df2.stack())] 堆叠第二个数据帧并对第一列执行isin,然后反转 df1[~df1[0].isin(df2.stack())] 以下是一种
{0:[1,2,3,4,5,6,7,11]}
具有两个列的df2
{0:[100,4,6,7],1:[1,3,4,7]}
我必须从df1中删除df2中任何列中有值的行
ressult数据帧
df3 = [2,5,11]
堆叠第二个数据帧并对第一列执行isin,然后反转
df1[~df1[0].isin(df2.stack())]
堆叠第二个数据帧并对第一列执行isin,然后反转
df1[~df1[0].isin(df2.stack())]
以下是一种使用的方法: 以下是一种使用的方法: 您可以使用: 输出:
对于大型数据帧,我已经完成了以下简单的基准测试: 您可以使用: 输出:
对于大型数据帧,我已经完成了以下简单的基准测试:
你能告诉我它在内存方面对大数据帧扫描有多好吗?你能告诉我它在内存方面对大数据帧扫描有多好吗?你能告诉我它在内存方面对大数据帧扫描有多好吗dataframes@aryansingh我已经做了一个简单的基准测试,你可以进一步检查我的更新在df1[~df1[0].isin(df2.values.flatte())]中,如果我的df1有超过1个列,那么可以给它~df1[[0,1]]这个功能吗?我问了另一个问题:你能告诉我它在内存方面对大型应用程序有多好吗dataframes@aryansingh我已经做了一个简单的基准测试,你可以在df1[~df1]中检查我的更新[0].isin(df2.values.flatte())]如果i df1有多个列,是否可以将其指定为~df1[[0,1]]这行吗?我问了另一个问题:
df1[~df1.squeeze().isin(df2.stack())]
0
1 2
4 5
7 11
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()