おはようございます、私はpythonを約1年半使用していますが、解決できない基本的な問題の前にいることに気づきました。
「datetime64 [ns]」形式の1つの列、「float64」、その他すべてが「オブジェクト」である、大きくない単純なデータフレーム(df)(約12,000行10列)があります。 デバッグしたところ、エラーは日時列から発生していると言えます。
このdfをExcelに保存すると、次のメッセージが表示されます。
Test.to_Excel(writer、 'test')ファイル "C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas \の16行目のファイル" test.py " core\frame.py "、1766行目、to_Excel engine = engine)ファイル" C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\io\formats\Excel .py "、652行目、書き込みでfreeze_panes = freeze_panes)ファイル" C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\io\Excel.py "、line 1395、write_cells xcell.value、fmt = self._value_with_fmt(cell.val)ファイル "C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\openpyxl\cell\cell .py "、行291、値self._bind_value(value)ファイル" C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\openpyxl\cell\cell.py " 、193行目、_bind_value self._set_time_format(value)ファイル "C:\ Users\renaud.viot\AppData\Local\Programs\Python\Python36\lib\site-packages\openpyxl\cell\cell.py"、277行目、_set_time_format self.nu mber_format = fmts [type(value)] KeyError:
私が使用しているコードは次のとおりです。
import pandas as pd
import datetime
from pandas import ExcelWriter
test = pd.read_Excel("test_in.xlsx")
test["CaseDate"] = pd.to_datetime(test["CaseDate"])
writer = ExcelWriter("test_out.xlsx")
test.to_Excel(writer,'test')
writer.save()
以下のデータのサンプルを参照してください。
> A CaseDate
> 0 A 2018-08-30
> 1 A 2018-08-30
> 2 A 2018-08-30
> 3 A 2018-08-30
> 4 A 2018-08-30
> 5 A 2018-08-30
> 6 A 2018-08-30
> 7 A 2018-08-30
> 8 A 2018-08-30
> 9 A 2018-08-30
明らかなことがあるに違いありません...ご協力ありがとうございます。 BR、ルノー
私のプロジェクトでも同じ問題が発生していました。このエラーが発生している理由を理解できませんでしたが、解決策を見つけました。
このエラーはモジュールopenpyxl
に関連していると思います。 Pandasは、データをExcelファイルとしてエクスポートするためのエンジンとして使用されます。ファイルに.xlsx
拡張子を付けると、自動的にクラスExcelWritter
に名前が付けられます。デフォルトのエンジンとしてopenpyxl
を使用します。
私がやったことは、このエンジンを変更することです。新しいエンジン(ExcelWritter
)を呼び出すxlsxwriter
にパラメーターを渡して、データフレームをエクスポートできます。
だから私のコードはから変更されました:
writer = pd.ExcelWriter('output.xlsx')
df.to_Excel(writer, 'data')
writer.save()
これに:
writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')
df.to_Excel(writer, sheet_name='data')
writer.save()
モジュールxlsxwriter
が環境にインストールされていない場合は、pip install xlsxwriter
を使用してから、コードを実行してください。
それはあなたの問題も解決するはずです。
pandas 0.23.4およびopenpyxl2.5.6でも同じ問題が発生しました。(condaupdate openpyxlを使用して)2.5.8に更新すると、問題は解決しました。