问题标签 [isin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
98 浏览

python - Python - 请使用 isin 建议一个更快的替代此代码的方法

我编写了一个程序来在天文图像中寻找彗星,但是它在一个区域运行缓慢。我已经通过尽可能使用 numpy 和 cupy 优化了它的速度。

我可以将速度问题追溯到一项操作:

thirdsplit并且file3new都是带有浮点值的numpy数组。它们的大小可以变化,但通常两者的大小都可能是 600 x 600。

上面的行比较了两个数组中的每个位置,并查看另一个数组中的对应位置是否相同。如果是这样True,则在结果 t1 形状相等的数组中的该位置返回。

例如

因此 t1[100,100]将返回True

有没有办法重写该行

让它运行得更快?

为了记录,我搜索了替代答案。我发现了一个类似的问题,但它使用了 Pandas,但我的程序中没有使用 Pandas。

0 投票
2 回答
145 浏览

python - 如果值在另一个数据框的另一列中,则添加列

我的数据框之一是:

另一个是:

我想如果 dataframe1 的任何名称在 dataframe2 列表中,它应该在 dataframe1 中添加一个名称列“present”,其中包含相应主题的值。

更新查询

df1

df2 是相同的,期望的结果是

0 投票
2 回答
100 浏览

python - Pandas 相当于 float 或 int

我有一个数据框,其中 A 列填充了数字 1-9。我只想过滤数字 2 和 3。 isin 不适用于 float dtypes。有替代方案吗?

类似于:

0 投票
1 回答
43 浏览

python - 为什么 pandas 的 isin 方法返回 False 以匹配 None?

假设我有两个等效的数据框:

当我这样使用 isin 方法时:

我得到以下输出:

'一个'
0 错误的
1 错误的
2 错误的

我希望结果对所有人都是正确的。为什么我没有得到预期的结果?

感谢社区的任何指导和澄清,谢谢!

0 投票
1 回答
38 浏览

python - 用另一个数据框过滤一个数据框

我有两个熊猫数据框。一个持有节点,另一个持有边。作为一个简单的事实:所有边都应该连接到某个节点。

上面是边缘df。这些值是包含两个字符串的列表。

下面是节点df。这些值也是列表,但是这次它们只包含一个字符串对象。

我想用节点过滤边缘。

因此,如果边列表的两个元素出现在节点中的一个元素中,则应选择该索引。

示例:edges[11] = ['INET_N_752', 'INET_N_1730'],因此节点 df 中应该有['INET_N_752']and ['INET_N_1730']

我怎样才能做到这一点?

这有效

0 投票
3 回答
371 浏览

python - Numpy在二维数组中查找公共点的索引

系统

操作系统: Windows 10 (x64),Build 1909
Python 版本: 3.8.10
Numpy 版本: 1.21.2

问题

给定两个浮点数据点的 2D (N, 3)Numpy 数组,(x, y, z)在一个数组中查找点与另一个数组中的点相等的索引的 Pythonic(矢量化)方法是什么?

注意: 我的问题不同之处在于我需要它来处理实际数据集,其中两个数据集可能因浮点错误而有所不同。请阅读下面的详细信息。

历史

类似的问题已经被问过很多次了:

  1. 如何找到另一个二维数组中出现的二维numpy数组的索引
  2. 测试二维 numpy 数组中的成员资格
  3. 获取 Numpy 2d 数组相交行的索引
  4. 在另一个二维数组中查找 numpy 二维数组行的索引
  5. Numpy 2d Array 相交行的索引
  6. 在另一个二维数组中查找 numpy 二维数组行的索引

以前的尝试

SO Post 1提供了一个工作列表理解解决方案,但我正在寻找一种能够很好地扩展到大型数据集(即数百万点)的解决方案:

代码1

输出1

尝试SO Post 3的解决方案(类似于SO Post 2),但使用浮点数不起作用(我怀疑np.isclose需要使用一些东西):

代码3

输出3

我的尝试

我试过numpy.isinnp.allnp.argwhere

哪个有效(并且,我认为,更具可读性和可理解性;即pythonic),但不适用于包含浮点错误的真实数据集:

输出:

如何通过合并使我的上述解决方案工作(在具有浮点错误的数据集上)np.isclose?欢迎替代解决方案。

注意: 由于small_array是 的子集big_array,因此无法直接使用,np.isclose因为形状不会广播:

产量

更新

目前,我唯一可行的解​​决方案是

0 投票
1 回答
81 浏览

python - 如何根据条件在pandas df中创建一个新列:A列在B列

在 Pandas 中,我想根据条件在数据框 df 中创建一个新列(C):如果 A 列包含 B 列,则“OK”,否则“Not OK”

我做了以下,但它不起作用。有什么建议么?

我也做过

在这两种情况下,输出都是相同的,并且是下面的df:

df 的输出

正确的输出应该是

df的正确输出

提前致谢

0 投票
1 回答
57 浏览

pandas - 检查前列中是否存在列的值

我有一个如下的数据框,

我想检查一个人是否有相同的水果,如果没有找到匹配项,则保留该值,

0 投票
1 回答
80 浏览

python - Python Dataframe:DF列中的字符串包含来自不同DF的子字符串和匹配时返回的子字符串值

同事,

也许您可以帮助我完成看似简单的任务,但我还没有足够的经验来解决这个问题。

假设我们有两个数据框:

  1. df1 包含子字符串;
  2. df2 包含更长的文本块,其中一些包含来自 df1 的子字符串。

这是我需要的:

  1. 我需要遍历行以检查 df1['subst'] 中的子字符串是否存在于 df2['strng'] 的任何位置
  2. 如果它存在于 df2 中,我希望 df2 中的新列 ['match_df1'] 包含来自 df1 的子字符串值。

df2 中的最终输出看起来像这样

字符串 匹配_df1
勒布朗詹姆斯得分 20 勒布朗·詹姆斯
死了三倍的约翰是厨师的地狱 三倍死亡
真实的不是你想的那样 真实不是
五乘五不是勒布朗的得分 五乘五
0 投票
1 回答
47 浏览

python - 用列表理解解决方案替换 numpy isin

一段时间以来,我一直试图让我的彗星程序的慢速部分运行得更快。我有一行如下

s1=np.isin(secondsplit,file2new)

secondsplit 是一个 numpy 数组。平均而言,它的大小约为 600 x 600,并且充满了浮动。file2new 是一个浮点数列表,通常大小为 300-700。

我在堆栈交换论坛上讨论了这个问题,并提供了一个使用列表理解和将 file2new 转换为集合以加快速度的解决方案。我的小规模测试代码有效,列表理解速度提高了 5 倍。当我扩大规模并将彗星程序更改为以相同方式使用列表时,问题就出现了。随着数据量的增加,这段代码的运行速度要慢 4 倍!

有人建议我应该做一个大规模的例子让人们看看我所做的。我现在在这里发布它,因为今天帮助论坛中没有很多人。

如您所见,代码的第一部分设置了示例变量。我使用 myarray 和 mylist 让人们更容易理解。myarray 是 600x 600 数组, mylist 是大小为 700 的列表,所有浮点数。

预期的输出应该是一个与 myarray 大小相同但具有 True 和 False 值的 numpy 数组。每第 4 项为 True。

运行时生成的输出如下。

我的问题,如果你选择接受它,你的挑战是使用列表理解来使 quickisin 函数比使用 numpy 的 isin 更快。最快的列表理解解决方案的奖品是吹牛。

请注意,数组中的浮点数和列表之间的匹配必须准确,因此排除了使用 isclose 的可能性。

感谢您