2017-01-01 13 views
1

私はExcelファイルをExcelで以下のように見えるがあります。ExcelファイルからMultiIndex Dataframeをインポートした後、インデックスにNaNが多数あるのはなぜですか?

  2016-1-1 2016-1-2 2016-1-3 2016-1-4 
300100 am 1   3   5   1 
     pm 3   2   4   5 
300200 am 2   5   2   6 
     pm 5   1   3   7 
300300 am 1   6   3   2 
     pm 3   7   2   3 
300400 am 3   1   1   3 
     pm 2   5   5   2 
300500 am 1   6   6   1 
     pm 5   7   7   5 

しかし、私はpd.read_excelことによってそれを輸入し、それを印刷した後、それはPythonで以下のように表示されていました:

  2016-1-1 2016-1-2 2016-1-3 2016-1-4 
300100 am 1   3   5   1 
NaN  pm 3   2   4   5 
300200 am 2   5   2   6 
NaN  pm 5   1   3   7 
300300 am 1   6   3   2 
NaN  pm 3   7   2   3 
300400 am 3   1   1   3 
NaN  pm 2   5   5   2 
300500 am 1   6   6   1 
NaN  pm 5   7   7   5 

どのようにすることができます私はこれを解決して、DataframeをExcelの形式のように見せます。多くの「NaN」はありませんか?ありがとう!

+0

試してみるのNaNと列の幅を拡大し、それは何も変更しない場合は何も – aguertin

+0

を変更するセルが数値フォーマットとして解析されているので、それが最も可能性があります、それは何もそれを見ていないときなら、私に教えてそれをnullと解釈する代わりに、テキスト/文字列として解析し、コード – aguertin

答えて

1

Excelファイルへのアクセスやバージョンに関する知識がないと、確かめることはできませんが、数字の列(最初の列)が1行おきに空白のように見えます。 Pandasは一様に塗りつぶした列を期待していますので、Excelでは1列目の番号(id?)ごとにAMとPMの両方について情報の「構造」がありますが、Pandasは2行目を見ています。このデータに実際にどのようにアクセスしたいかによって、すべてのNaNをその直上の番号に置き換えることが簡単にできるので、各行には「id」の午前または午後の情報が含まれます。もう1つの問題は、列の構造を2016-1-1-amと2016-1-1-pmのフィールドに変更することです。あなたはfillna方法を探している

+0

から ""を挿入する必要がある場合は、ファイルをインポートする前にExcelでその上の数字でNaNを置き換えようとしました。しかし、パンダでそれをどのように素早く行うのですか?列内の値であれば「置換」を使用できますが、インデックスの処理方法はわかりません。ありがとう! – Steven

0

:Excelはあなたがあなたの例では持っているもののように見える時間の

df = df.fillna('') 
2

ほとんど、それは実際にそれらのスペースがある空白を持っていません。しかし、細胞は融合しているので、かなり見えます。あなたがパンダにインポートすると、それらは空またはNaNとして読み込まれます。

これを修正するには、空のセルを順方向に塗りつぶしてから、インデックスとして設定します。

df.ffill() 
関連する問題