私は過去2〜3ヶ月間このスクリプトを正常に実行していましたが、何らかの理由で私はそれが私に侵入すると判断したことを知らなかったのです。私はこのスクリプトで使用しているPythonやライブラリを更新していませんが、今はそれを修正する手助けが必要です。ValueError:解凍するには1以上の値が必要です。コードをより堅牢にするにはどうすればよいですか?
Company, Registered date, Contact name, Contact email, Contact phone
を次のようにデータフレームを起動する
私は小文字に全てを変換し、「_」とスペースを交換することによってそれらの列をクリーンアップである
次のステップは、「CONTACT_NAME」を分割することです「(最初)(最後)」、つまり「John Doe」として始まり、最初と最後の2つの列を追加したいと考えています。新しいDFは次のようになります。
company, registered_date, contact_name, first_name, last_name, contact_email, contact_phone
連絡先名の分割および/または新しい列の作成でプログラムが壊れています。私はこれを行うために使用されているコードの行は次のとおりです。
df1['first_name'], df1['last_name'] = zip(*df1['registrant_name'].apply(lambda x: x.split(' ', 1)))
トレースバック氏は述べています:
File "(name).py", line 123
df1['first_name'], df1['last_name'] = zip(*df1['registrant_name'].apply(lambda x: x.split(' ', 1)))
ValueError: need more than 1 value to unpack
私はline.splitを使用して、この同じ問題を持つ人を発見したいくつかのものに目を通したよう(パンダの中ではなく一般的にはPython)、誰かがそれはおそらく両方の値がそこにないからだと言いました。確かに、これは3ヶ月ぶりに "contact_name"の列にちょうど1つの値で終わったようです。 "John Doe"の代わりに、それはちょうど "John"です(幸いにもこれは文字通り最初のエントリでしたそうでなければ私は一列ごとに目を通してみるとしばらく困惑しました)。
私の質問は、私のコードをより堅牢にするために、どうすればこの問題が再び発生した場合に解決できるのかです。私は何をしたいのかと思っています。スペースがない場合は、現在の値を "first_name"として取得し、最後に "NaN"を追加します。ループは理想的ではないので、私はDF内でそれを行う方法を知りません。
ありがとうございました!
を。代わりにsplit() 'を使います。 – IanS