我想找到一种方法,使用类似于dplyr包的东西在Python中从R重新创建相同的命令代码。在R中,我会这样做:
library(dplyr)
df <- data.frame(Countries=c('Brazil','Venezuela','Brazil, Colombia, Paraguay','Argentina','Peru','Andorra,Argentina,Chile,Uruguay'),
Code=c(1,2,3,4,5,6))
df %>% filter(grepl('(Brazil|Argentina)',Countries))
甚至:
a=strsplit(as.character(df$Countries),',')
a=lapply(a,FUN=function(t) gsub(" ","",t))
ele=unlist(lapply(a,FUN=function(t) any(t%in%c('Brazil','Argentina'))))
(df[ele,])
我想要的输出:
Countries Code
1 Brazil 1
2 Brazil, Colombia, Paraguay 3
3 Argentina 4
4 Argentina,Chile,Uruguay 6
在Python中,我尝试了以下方法:
import pandas as pd
df = pd.DataFrame(dict(Countries=['Brazil','Venezuela','Brazil, Colombia, Paraguay','Argentina','Peru','Andorra,Argentina,Chile,Uruguay'], Code=[1,2,3,4,5,6]))
list_=['Brazil','Argentina']
print(df.loc[df['Countries'].isin(list_)])
但输出结果如下所示:
Countries Code
0 Brazil 1
3 Argentina 4
似乎您正在寻找带有对象
dtype
的.str
扩展pd.Series
(基本上您可以调用pd.Series.str....
来获取专门用于处理正则表达式和其他基于string
的操作的pandas函数子集,但是这仅在数组为数据类型“object”时才有效一种简洁的方法是使用
list_
变量上的.join
函数将其连接到一个字符串中,该字符串可由正则表达式匹配模式使用参见文档中除
.str.contains
之外的文档和其他方法 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.html相关问题 更多 >
编程相关推荐