python - Pandas 中的过滤器 - 为什么这不起作用?
问题描述
这是一个基本问题,所以提前道歉。
我正在使用 Pandas,并使用以下行对数据进行分组:
page_serp_df.groupby([page_serp_df.meta_keywords_1_length]).count()['keyword']
这是参考以下内容:
- 数据框:[page_serp_df]
- 按列分组:meta_keywords_1_length
- 使用过滤器计数:关键字列
我不明白的是为什么过滤条件必须是['keyword']即引号中的字符串?例如,这不起作用,这对我来说非常违反直觉:
page_serp_df.groupby([page_serp_df.meta_keywords_1_length]).count()[page_serp_df.keyword]
提前致谢!
解决方案
我认为对该.count()
方法返回的内容存在误解。
尝试遵循以下示例:
创建示例数据框
df = pd.DataFrame({
'A':[0,1,0,1, 1],
'B':[100,200,300, 400, 500],
'C': [1,2,3,4,5]
})
这是该count()
方法将返回的内容groupby
# similarly to your example I am grouping by A and counting
df.groupby([df.A]).count()
如您所见,该count()
方法本身返回一个数据框,其中包含分组列具有相同值的列的其他列值的计数。count()
之后,您可以像这样查询特定列的返回形式
df.groupby([df.A]).count()['C']
但是您示例中的第二种情况,在我的示例中对应于df.groupby([df.A]).count()[df.C]
会报错!
实际上,您可以df.groupby([df.A]).count()
通过 pandas 查询数据框(在本例中),Series
但您知道您需要来自df.columns
.
您可以检查自己,df.C
并且'C'
是两种非常不同的变量类型。
print(type(df.C))
print(type('C'))
# <class 'pandas.core.series.Series'>
# <class 'str'>
如果由于某种原因您的代码仍然可以与等价物一起使用,df.C
则可能存在一些意外情况,例如 的唯一值df.C
是具有相同名称的列的字符串.. 或类似的意外情况。
推荐阅读
- xpath - 对 XPath 语法感到困惑
- java - 不应使用 java 和 mysql 将现有 Empno 添加到数据库中
- c# - Console.ReadLine() 在此代码上下文中做了什么?
- rust - 如何返回两个借用的 RefCell 的组合?
- python - 如何使用 Selenium 的“find_elements_by_xpath”打印标题
- arrays - 如何对两个名称的字符串数组进行排序并将它们重新组合在一起,保持排序完整性?
- bash - 命令输出 > sed 在特定字符串后替换
- r - 我的 R 正则表达式匹配正确吗?
- r - 为什么我不能重命名 tbl 的列?
- python - pandas 数据帧是如何存储在内存中的?