【Python】TIPS:pandas.read_csv時のUnnamed回避【pandas】


概要

  • pandasのread_csv時に、カラムが空欄の時にUnnamedで読み込んでしまう現象の回避方法
  • pandasは0.24以上の機能を使用

問題

カラムに複数の空欄がある場合、Unnamedが勝手に入力されてしまう。
データフレームは、4行のカラムを含んでいる。

問題

concat_df = pd.read_csv(r'**.csv',
                        header=[0,1,2,3],
                        keep_default_na=False,
                        index_col=[0],
                        parse_dates=[0],
                        encoding='shift-jis',
                        engine='python'
                       )

解決方法

read_csvの際にヘッダを読み込まず、あとでMultiIndexとしてカラム名を登録する

解決方法
raw_df = pd.read_csv(r'**.csv',
                     keep_default_na=False, # 空欄をNaで置き換えない
                     header=None, # headerは指定しない
                     index_col=[0],
                     encoding='shift-jis',
                     engine='python'
                     )

# MultiIndex.from_frameを使用する。
# raw_dfの4行目までをカラムとしてMultiIndexを作り、raw_dfのカラムとして入力する
raw_df.columns = pd.MultiIndex.from_frame(raw_df.iloc[:4, :].T)

# カラム名とデータフレームの4行目までは重複するので削除する。
raw_df = raw_df.iloc[4:, :]