0

Kaggle のデータセットに取り組んでおり、Pandas 列のタイトルを名前で抽出したいと考えています。次のコードを使用します。

    def extract_patt(patt, linea):
        matchObj = re.match(patt, linea)
        result = ""
        if matchObj:
            return matchObj.group(1).lower()
        else:
            return ""

    def extract_title(linea):
        return extract_patt('^.+,\s(.+)\..+', linea)

    titles = dataframe1["Name"].apply(extract_title)

    title_mapping = {"": 0, "mr": 1, "miss": 2, "mrs": 3, "master": 4, "dr": 5, "rev": 6, "major": 7, "col": 7, "mlle": 8, "mme": 8, "don": 9, "lady": 10, "countess": 10, "jonkheer": 10, "sir": 9, "capt": 7, "ms": 2}

    for k in title_mapping:
        titles[titles == k] = title_mapping[k]

    dataframe1["Title"] = titles

ただし、このコードを Azure Machine Learning プラットフォームで Python コードとして実行すると、次のエラーが発生します。

Error 0085: The following error occurred during script evaluation, please view the output log for more information:
 ---------- Start of error message from Python interpreter ----------
 data:text/plain,Caught exception while executing function: Traceback (most recent call last):
   File "C:\server\invokepy.py", line 176, in batch
     rutils.RUtils.DataFrameToRFile(outlist[i], outfiles[i])
   File "C:\server\RReader\rutils.py", line 28, in DataFrameToRFile
     rwriter.write_attribute_list(attributes)
   File "C:\server\RReader\rwriter.py", line 59, in write_attribute_list
     self.write_object(value);
   File "C:\server\RReader\rwriter.py", line 121, in write_object
     write_function(flags, value.values())
   File "C:\server\RReader\rwriter.py", line 104, in write_objects
     self.write_object(value)
   File "C:\server\RReader\rwriter.py", line 121, in write_object
     write_function(flags, value.values())
   File "C:\server\RReader\rwriter.py", line 71, in write_integers
     self.write_integer(value)
   File "C:\server\RReader\rwriter.py", line 147, in write_integer
     self.writer.WriteInt32(value)
   File "C:\server\RReader\BinaryIO\binarywriter.py", line 23, in WriteInt32
     self.WriteData(self.Int32Format, data)
   File "C:\server\RReader\BinaryIO\binarywriter.py", line 14, in WriteData
     self.stream.write(pack(format, data))
 error: cannot convert argument to integer

 ---------- End of error message from Python  interpreter  ----------
Start time: UTC 09/29/2015 07:47:02
End time: UTC 09/29/2015 07:47:13

これを削除すると、整数ではなくタイトルの列が表示されるため、問題はマッピング コードにある可能性があります。

編集:マップする for ループの代わりに次のことも試しましたが、同じエラーが発生しました:

dataframe1["Title"].replace(title_mapping, inplace=True)
4

2 に答える 2

0

タイタニックのデータセットでも同じ問題に遭遇しました。最初に Azure の組み込みの「Project Columns」を使用してチケットとキャビン番号の列をドロップし、次にファイルを Python スクリプトにプッシュしたところ、機能するようになりました。

それらの列の何が気になったのですか?最初の行の空の値が問題である可能性があるというメッセージを他の人が投稿し、MS はバグ修正が来ると言っています。

于 2015-11-30T23:10:12.920 に答える
0

私の経験によると、問題titles == kのコードは code にありますtitles[titles == k] = title_mapping[k]。式の値の型titles == kはブール型です。

Python では、ブール型は一種の整数値型です。False 値は 0 と等しく、0 以外のすべての整数は True 値です。

ただし、マップ 'titles' のキーの値の型は文字列型である必要があるため、エラー メッセージは「引数を整数に変換できません」です。

よろしくお願いします。

于 2015-09-30T09:18:07.883 に答える