2016年02月02日

Pandasで行だけ確保した空のDataFrameを作って、後からカラムを加えていく

何か元になるDataFrameがあったとする。

import pandas as pd
import numpy as np

# 元になるDataFrame
df = pd.DataFrame(np.random.random([100, 3]), columns=['foo', 'bar', 'baz'])
df.head()

  #=>         foo       bar       baz
  #=> 0  0.823091  0.711458  0.498393
  #=> 1  0.862969  0.410822  0.801163
  #=> 2  0.619817  0.720065  0.784882
  #=> 3  0.139458  0.072876  0.356514
  #=> 4  0.875172  0.953921  0.626421

# 100行いる
len(df)
  #=> 100

これを加工して、新しいDataFrameを作りたい。この時、まず空のDataFrameを作って、そこにカラムを1列ずつ計算して追加していきたい。

下記のように書けばいけるようだ。

# カラムがないindexだけ設定されているDataFrameを作成
df_new = pd.DataFrame(index=df.index, columns=[])
df_new
  #=> Empty DataFrame
  #=> Columns: []
  #=> Index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...

# これにdfを整形したカラムを追加してみる
df_new['hoge'] = df.foo ** 2
df_new.head()
  #=>    hoge
  #=> 0  0.677479
  #=> 1  0.744715
  #=> 2  0.384173
  #=> 3  0.019449
  #=> 4  0.765926

このまま1列ずつ追加していくと楽だった。