-1

R 函数 %in% 的 pandas 等效项是什么?

%in%当我们在 R 中有一个数据框时,我们可以使用给出布尔输出的运算符检查列中包含列表中的字符串的行。

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

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

我们如何在 python 中为pandasDataFrame 做同样的事情?

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

4

2 回答 2

2

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

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

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

datar已将 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]

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

于 2021-06-15T19:34:56.277 回答
0

pandas包具有.str用于字符串列的方法,并且该.str方法本身包含.isin()等效%in%于 R 中的运算符的方法。

上面的 R 代码可以使用pandas如下方式在 python 中实现 - 假设它iris是一个 pandas DataFrame:

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

然后,您可以过滤您的 DataFrame 并仅保留具有物种“setosa”或“virginica”的行,如下所示:

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

于 2021-06-12T13:52:22.313 回答