如何解决相当于 R 函数 %in% 的 Pandas 是什么?
Pandas 相当于 R 函数 %in% 是什么?
当我们在 R 中有一个数据框时,我们可以使用运算符 %in%
检查列中哪些行包含列表中的字符串,该运算符提供布尔输出。
具体例子:如果我们想检查字符串“setosa”和“virginica”在species
数据集的iris
列中的哪一行,我们可以简单地使用以下代码:
iris[:,c('species')] %in% c('setosa','virginica')
。
我们如何在 Python 中为 pandas
DataFrame 做同样的事情?
我想这样做的原因是我想过滤数据集,只保留物种“setosa”或“virginica”的行。
解决方法
%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()
方法,它等效于 %in%
R 中的运算符。
上面的 R 代码可以使用 pandas
在 python 中实现,如下所示 - 假设 iris
是一个 Pandas DataFrame:
iris.species.str.isin(['setosa','virginica'])
然后您可以过滤您的 DataFrame 并仅保留物种为“setosa”或“virginica”的行,如下所示:
iris[iris.species.str.isin(['setosa','virginica'])]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。