R函数%in%的等价物是什么?

2024-09-28 21:03:35 发布

您现在位置:Python中文网/ 问答频道 /正文

R函数%in%的等价物是什么

当我们在R中有一个数据帧时,我们可以使用操作符%in%检查列中包含列表中的字符串的行,该操作符提供布尔输出

具体示例:如果我们想检查字符串“setosa”和“virginica”在iris数据集的species列中的行,我们可以简单地使用以下代码:

iris[:,c('species')] %in% c('setosa', 'virginica')

我们如何在python中对pandas数据帧执行相同的操作

我想这样做的原因是我想过滤数据集,只保留“setosa”或“virginica”物种的行


Tags: 数据函数字符串代码示例irispandas列表
2条回答

pandas包具有用于字符串列的.str方法,而.str方法本身包含.isin()方法,该方法相当于R中的%in%运算符

上面的R代码可以在python中使用pandas实现,如下所示-假设iris是一个数据帧:

iris.species.str.isin(['setosa', 'virginica'])

然后,您可以过滤您的数据帧,并仅保留物种为“setosa”或“virginica”的行,如下所示:

iris[iris.species.str.isin(['setosa', 'virginica'])]

R中的%in%实际上是is.element

r$> 1 %in% 1:2                    
[1] TRUE

r$> is.element(1, 1:2)                                  
[1] TRUE

^{}已将R中的一些函数移植到python中:

>>> from datar.all import c, f, is_element, filter
>>> from datar.datasets import iris
>>> 
>>> iris >> filter(is_element(f.Species, c('setosa', 'virginica')))
    Sepal_Length  Sepal_Width  Petal_Length  Petal_Width    Species
       <float64>    <float64>     <float64>    <float64>   <object>
0            5.1          3.5           1.4          0.2     setosa
1            4.9          3.0           1.4          0.2     setosa
2            4.7          3.2           1.3          0.2     setosa
3            4.6          3.1           1.5          0.2     setosa
..           ...          ...           ...          ...        ...
4            5.0          3.6           1.4          0.2     setosa
95           6.7          3.0           5.2          2.3  virginica
96           6.3          2.5           5.0          1.9  virginica
97           6.5          3.0           5.2          2.0  virginica
98           6.2          3.4           5.4          2.3  virginica
99           5.9          3.0           5.1          1.8  virginica

[100 rows x 5 columns]

我是^{}包的作者。如果您有任何问题,请随时提交问题

相关问题 更多 >