2017-12-19 8 views
0

私は、共通の赤ちゃんの名前が異なる行に記載されたパンダのデータフレームを持っています。各行の各名前をループし、アルファベットの各文字が赤ちゃんの名前の最後の文字として表示される回数を取得する必要があります。私は、キーとアルファベット文字がアルファベット26文字である値の辞書を返す必要があります。値はアルファベット文字がデータフレーム内のすべての赤ちゃん名の最後の文字として表示される頻度です。 sample of pandas datafram正規表現、カウンタ、または文字列メソッドを使用してpandasデータフレームをループして辞書を返す方法は?

正規表現でforループを使用しますか?私はカウンターを使用しますか?列をシリーズにした後に文字列メソッドを使用しますか?ループと正規表現に関しては

は、これまで私が試してみました:

import re 

for index, row in male_names.iterrows(): 
    male_last_letter_freq = row['name'](r'/(\w)\b/') 
    male_letter_freq.update(male_last_letter_freq) 

male_last_letter_freq 

は明らかに、私は、ループ内の正規表現を含むための構文を知りません。

male_name_series = male_names['name'] 
male_name_series.str.extract(r'/(\w)\b/') 

どちらの方法でエラーを返す:

は、私はまた、シリーズにデータフレームからの「名前」列をオンおよび方法は、いくつかの.strパンダを呼び出そうとしています。私は本当にそのような特定のことをする方法を失う。どんな助けでも大歓迎です。

+0

あることは確かです。Pythonパターンでは正規表現の区切り文字を使用しないでください。 'r '\ w \ b''を使って、" words "の最後の単語charとマッチさせます。 –

+0

文字列は文字のリストです - 最後は 'name [: - 1]' ....です。 –

答えて

0

私が正しくあなたの質問を理解していれば、あなたが正規表現を必要とするが、ちょうど使用しないでください。

dict(pd.value_counts(df["name"].str[-1])) 

説明:最後の文字、pd.value_countsカウントユニークな値を抽出df["name"].str[-1]は、最終的にはdictは辞書にオブジェクトを変換し、

+0

ありがとう@ user2314737。これはうまくいった。今、私はどのように手紙と周波数のためのキーと値の見出しを作成するので、私はパンダのデータフレームに辞書をプロットすることができますか?または、既にデータフレームに変換するコードに含めることができるメソッドがありますか?アルファベット文字をx軸にする必要があります。 – Danny

関連する問題