【发布时间】:2016-03-14 03:59:10
【问题描述】:
这应该很简单。我想要的是能够按函数的结果进行分组,就像在 SQL 中您可以按表达式进行分组一样:
SELECT substr(name, 1) as letter, COUNT(*) as count
FROM table
GROUP BY substr(name, 1)
这将计算名称列以字母表中每个字母开头的行数。
我想在 python 中做同样的事情,所以我假设我可以将一个函数传递给 groupby。但是,这只会将索引列(第一列)传递给函数,例如 0、1 或 2。我想要的是名称列:
import pandas
# Return the first letter
def first_letter(row):
# row is 0, then 1, then 2 etc.
return row.name[0]
#Generate a data set of words
test = pandas.DataFrame({'name': ["benevolent", "hidden", "absurdity", "anonymous", "furious", "antidemocratic", "honeydew"]})
# name
# 0 benevolent
# 1 hidden
# 2 absurdity
# 3 anonymous
# 4 furious
# 5 antidemocratic
# 6 honeydew
test.groupby(first_letter)
我在这里做错了什么。如何按行索引以外的内容进行分组?
【问题讨论】:
标签: python python-3.x pandas group-by aggregate-functions