私は、列の1つが名字であるdatafromを持っています。名前の性別を推測するにあたって、gender-guesserライブラリからファーストネームを渡したいと思います。しかし、私は新しい「性別」列を作成して「姓」列からのデータを渡すためにしようとすると:既存の列に関数出力を新しい列に取り込む方法
df_names['Gender'] = gender.Detector().get_gender(df_names['First Name'])
私はそれが何かをしていると思います
TypeError: 'Series' objects are mutable, thus they cannot be hashed
エラーを取得ジェンダーの推測家が何をしているのかとは関係ないが、私は100%確実ではない。私はジェンダーの推測者とパンダの両方にトレースバックを取得します。私は推測者に文字列を渡すことができ、問題なくリターンすることができます。私はまた、 'ファーストネーム'データを別の文字列と連結して有効な出力を得るために、自分のスーパーシンプルな関数を書くことができます。 like:
def concat(x):
return x+" something more"
df_names['More'] = concat(df_names['First Name'])
期待通りに動作します。一致する内容の新しい列を作成します。
また、ilocを使用して1つの正しい戻り値を取得することもできます。私はforループを動作させることができましたが、実際には長すぎます。それはあなたがget_gender
メソッドの実装の詳細に実行しているように、最も可能性の高いPythonはfirst name
オブジェクトの__hash__
メソッドを呼び出すと、スローする原因と思われる、ディクショナリのキーとしてFirst Name
を使用しようとしているに見えます
'df_names [ '性別'] = df_names [ '姓']を動作するはずです適用されます。(ラムダX:。gender.Detector()get_gender(X))' –
これは私が私は結果を与えるん期待していますが、iloを使ってforループを繰り返すよりも速くはないようですc [i]。 – the3rdNotch