首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >潘达斯的过滤器-为什么这不起作用?

潘达斯的过滤器-为什么这不起作用?
EN

Stack Overflow用户
提问于 2020-09-23 11:27:01
回答 1查看 97关注 0票数 0

这是一个基本的问题,所以事先道歉。

我正在使用Pandas,并将数据分组如下:

代码语言:javascript
复制
page_serp_df.groupby([page_serp_df.meta_keywords_1_length]).count()['keyword']

这指的是以下内容:

数据帧:page_serp_df

  • Grouping by列:meta_keywords_1_length

  • Counting与过滤器:关键字

我不明白的是,为什么过滤条件必须是‘关键字’,即引号中的字符串?例如,这不起作用,而且对我来说非常违背直觉:

代码语言:javascript
复制
page_serp_df.groupby([page_serp_df.meta_keywords_1_length]).count()[page_serp_df.keyword]

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-23 12:22:00

我认为对于.count()方法返回的内容存在误解。

试着遵循以下示例:

创建一个示例数据框架

代码语言:javascript
复制
df = pd.DataFrame({
    'A':[0,1,0,1, 1],
    'B':[100,200,300, 400, 500],
    'C': [1,2,3,4,5]
})

这就是count()方法在groupby之后返回的内容

代码语言:javascript
复制
# similarly to your example I am grouping by A and counting 
df.groupby([df.A]).count()

如您所见,count()方法本身返回一个dataframe,其中包含分组列具有相同值的列的每个列值的计数。在此之后,您可以查询一个特定的列形式,返回的count()如下

代码语言:javascript
复制
df.groupby([df.A]).count()['C']

但是你的例子中的第二个例子,在我的例子中,它对应于df.groupby([df.A]).count()[df.C]

会抛出一个错误!

实际上,您可以通过熊猫df.groupby([df.A]).count()查询数据格式(在本例中是Series ),但正如您所知,您需要一个来自df.columns的字符串或列。

您可以检查一下,df.C'C'是两种非常不同的变量类型。

代码语言:javascript
复制
print(type(df.C))
print(type('C'))
# <class 'pandas.core.series.Series'>
# <class 'str'>

如果由于某种原因,您的代码仍然可以与df.C相同,那么可能会有一些意外情况,比如df.C的唯一值是一个具有相同列名的字符串。或者是一些非故意的事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64026930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档