以%表示的R函数%的熊猫等价物是多少



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

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

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

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

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

我想这样做的原因是我想过滤数据集,并且只保留与物种"的行;setosa";或";virginica";。

R中的%in%实际上是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软件包的作者。如果您有任何问题,请随时提交问题。

pandas包具有用于字符串列的.str方法,而.str方法本身包含.isin()方法,该方法等效于R中的%in%运算符。此外,正如@rhug123所指出的,.isin方法可以直接应用于序列。我已经对下面的代码进行了相应的更改。

上面的R代码可以使用pandas在python中实现,如下所示——假设iris是pandas DataFrame:

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

然后,你可以过滤你的DataFrame,只保留带有"setosa"或"virginica"物种的行,如下所示:

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

最新更新