gpt4 book ai didi

python - 根据没有 isin() 的其他 df 的列过滤数据框

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:19 25 4
gpt4 key购买 nike

我想根据 df2 的列过滤 df1。如果它们出现在 df2 中,我只需要将行保留在 df1 中。我试过像这样使用 isin():

df1 = pd.DataFrame({'A' : [5,6,3,6,3,4]})

df2 = pd.DataFrame({'B' : [0,0,3,6,0,0]})

df1[df1['A'].isin(df2['B'])]

它给出了所需的 df:

    A
6
3
6
3

但是,我的数据帧非常大(数百万行),因此此操作需要花费大量时间。是否有其他更有效的方法来获得所需的结果?

最佳答案

如果您尝试左连接然后过滤掉 NA 会怎样。我刚刚生成了两个有点大的数据帧(一个 1000 万,另一个 400 万),在一台普通的 8GB RAM 笔记本电脑上,它运行了几秒钟。示例如下。希望对您有所帮助。

df1 = pd.DataFrame({'A' : range(10000000), "B": range(0, 20000000, 2)})
df2 = pd.DataFrame({'C' : range(4000000), "D": range(0, 8000000, 2)})
df = pd.merge(df1, df2, how="left", left_on="B", right_on="C")
df = df[df["C"].notnull()].copy()

关于python - 根据没有 isin() 的其他 df 的列过滤数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54384307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com