私が使用しようとすると:
df[df.columns.difference(['pos', 'neu', 'neg', 'new_description'])].to_csv('sentiment_data.csv')
エラーが発生します:
UnicodeEncodeError: 'utf-8' codec can't encode character '\ud83d' in position 388: surrogates not allowed
このエラーの意味と、このエラーを修正してcsv/Excelにデータをエクスポートする方法を理解できません。私はこれに言及しました question が、私は多くを理解しておらず、パンダでこれを行う方法に答えていません。
ポジション388の意味? 「\ ud83d」という文字は何ですか?
Excelにエクスポートしようとすると、別のエラー位置が表示されます。
df[df.columns.difference(['pos', 'neu', 'neg', 'new_description'])].to_Excel('sentiment_data_new.xlsx')
Excelへのエクスポート中にエラーが発生しました:
UnicodeEncodeError: 'utf-8' codec can't encode character '\ud83d' in position 261: surrogates not allowed
同じエンコーディングで位置が異なるのはなぜですか?
他の重複する質問は、pandas DataFrame。
この回答はコメントに応答し、コメント自体を入れるには長すぎます。
Unicodeの絵文字は、基本多言語ペインの外側にあります。サロゲートペアは、これらのグリフを2つのコードポイントとしてUTF-16で直接表現できるようにする方法です。
サロゲートペアを強制的にBMPの外の対応するコードポイントに解決することができます:
_>>> "\ud83d\ude04".encode('utf-16','surrogatepass').decode('utf-16')
'\U0001f604'
_
しかし、この解決策は今のところあなたを得るだけかもしれません。
多くのソフトウェア(IDLEなど)はBMPのみをサポートしています。これは、実際にはUTF-16を使用していないため、その前身であるUCS-2は本質的にUTF-16ですが、BMP外のコードポイントはサポートされていないためです。 IDLEでは、print ('\U0001f604')
は_UnicodeEncodeError: 'UCS-2' codec can't encode character '\U0001f604' in position 0: Non-BMP character not supported in Tk
_を発生させるだけです