セルが結合されたエクセルファイルを読み込んでDataFrameにしたら、空白だらけになった。
このままでは集計できない…。
空白のセルは上の値をコピーしたいんだけど、どうしたらいいの?
よくあることです!
では今回は、pandas DataFrameの
「空白を上の値で埋める方法」
をできるだけわかりやすく解説いたします!
【著者情報】
Python歴3年。
入社2年目の春に先輩が突然トンズラし、業務を半分肩代わりするハメに…。
今までの1.5倍の仕事をこなせるはずもなく、苦しむ毎日。
業務効率化を模索中にPythonと出合う。
業務とPythonの相性が良く、2倍以上の効率化を実現。現在も効率化を進行中。
[pandas]DataFrameの空白を上の値で埋めるには
「fillna」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import pandas as pd
df = pd.read_excel('input.xlsx')
df = df.fillna(method = 'ffill')
df.to_csv('output.csv', encoding='shift-jis', index = None)
df = df.fillna(method = 'ffill')
事前準備
- pandasのインストール
「DataFrame」を作成・編集するには、「pandas」が必要になります。
pandasのインストール方法
pandasを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install pandas
※pandasを使用したことがある場合は、このインストール作業は不要です。
インストールができない場合の対処法などは下記記事をご参考ください。
DataFrameの基礎解説
「read_excel」などは下記記事で解説しております。ご参考ください。
解説:上の値で埋める
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
df = df.fillna(method = 'ffill')
上記一文にて、空白を上の値で埋めることができます。
<テンプレ>
【 データフレーム = データフレーム.fillna(method = ‘ffill’) 】
「fillna」は空白(欠損値)を埋めるために使われます。
空白を「0」で埋めたり「平均値」で埋めたりすることもできます(今回は割愛)
「method = ‘ffill’」とすることで、空白をすぐ上の値で埋めることができます。
<参考>
「ffill」ではなく「bfill」にすると、下の値で埋めることができます。
空白行を埋めるのではなく、行ごと削除したい場合は下記記事をご参考ください。
疑問:下から上に結合されていたらどうなるのか
ここでふと疑問に思いました。
「下から上に結合されていたらどうなるのか」
ちょっと意味がわかりませんよね…。
A2に値が入った状態で、A1とA2を結合されてしまっていたらどうなるのかということです。
DataFrameに変換して結合が解除されたら、A2に文字が入るから、A1は空白のままなのでは?と思ったのです。
検証してみました。
心配は無用でした。
問題なく空白が埋められています。
DataFrameを使わなくても、エクセルでセルを結合・解除するだけで、疑問は解決していました。
結合が解除された場合、値は必ず上のセルに入るようです。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
まとめ
pandasのDataFrameの空白を上の値で埋める方法解説いたしました。
セル結合をしていない場合でも「fillna」で空白を埋めることができますので、ぜひご活用ください。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!