这是一个基本问题,因此请您提前道歉。
我正在使用Pandas,并且通过以下行对数据进行分组:
page_serp_df.groupby([page_serp_df.meta_keywords_1_length]).count()['keyword']
这是指以下内容:
我不明白为什么过滤条件必须为 ['keyword'] ,即用引号引起来的字符串? 例如,这行不通,对我来说是很不直观的:
page_serp_df.groupby([page_serp_df.meta_keywords_1_length]).count()[page_serp_df.keyword]
谢谢!
答案 0 :(得分:1)
我认为.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()
查询数据帧(在这种情况下为Series
),但是您知道需要df.columns
中的字符串或列。
您可以检查自己df.C
和'C'
是两种非常不同的变量类型。
print(type(df.C))
print(type('C'))
# <class 'pandas.core.series.Series'>
# <class 'str'>
如果由于某种原因,您的代码仍可以与df.C
等效,则可能会发生意外情况,例如df.C
的唯一值是具有相同名称的字符串。那样的无意。