これは本当に簡単なはずです。私が欲しいのは、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)
私はここで何が間違っているのですか。行インデックス以外の何かでグループ化するにはどうすればよいですか?
最初の文字の新しい列を作成します。
def first_letter(row):
return row[0]
test['first'] = test['name'].apply(first_letter)
そしてそれをグループ化します:
group = test.groupby('first')
これを使って:
>>> group.count()
name
first
a 3
b 1
f 1
h 2
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加