pandas:空のDataFrame作成

空のDataFrameの作り方のバリエーションを書きます。

いろいろな空のDataFrame

バリエーションとしては、以下でしょうか。

  • Index とカラム名のない空の DataFrame
  • カラム名ありの空の DataFrame
  • Index ありの空の DataFrame
  • Index とカラム名のある空の DataFrame

コードで見てみます。

import pandas as pd

# Indexとカラム名のない空のDataFrame
df_a = pd.DataFrame()
print(df_a)
# Empty DataFrame
# Columns: []
# Index: []

# カラム名ありの空のDataFrame
df_b = pd.DataFrame(columns=['col_1', 'col_2'])
print(df_b)
# Empty DataFrame
# Columns: [col_1, col_2]
# Index: []

# Indexありの空のDataFrame
df_c = pd.DataFrame(index=['row_1', 'row_2'])
print(df_c)
# Empty DataFrame
# Columns: []
# Index: [row_1, row_2]

# Indexとカラム名のある空のDataFrame
df_d = pd.DataFrame(index=['row_1', 'row_2'], columns=['col_1', 'col_2'])
print(df_d)
#       col_1 col_2
# row_1   NaN   NaN
# row_2   NaN   NaN

空のDataFrameに値を入力する

DataFrameに値を入力するコードを書きます。

# Indexとカラム名のある空のDataFrame
df_d = pd.DataFrame(index=['row_1', 'row_2'], columns=['col_1', 'col_2'])
print(df_d)
#       col_1 col_2
# row_1   NaN   NaN
# row_2   NaN   NaN

# "col_2"列に値を入れる。
df_d['col_2'] = 3
print(df_d)
#       col_1  col_2
# row_1   NaN      3
# row_2   NaN      3

# "row_2"行に値を入れる。
df_d.loc['row_2'] = 5
print(df_d)
#       col_1  col_2
# row_1   NaN      3
# row_2     5      5

# locを使って、"col_2"列に値を入れる。
df_d.loc[:, 'col_2'] = 7
print(df_d)
#       col_1  col_2
# row_1   NaN      7
# row_2     5      7

# ("row_2", "col_2")に値を入れる。
df_d.loc['row_2', 'col_2'] = 9
print(df_d)
#       col_1  col_2
# row_1   NaN      7
# row_2     5      9

iat, at, iloc, locでDataFrameに値を入力する

iat/at/iloc/loc の使い方を書きます。

iat/at は一箇所の変更、iloc/loc は複数箇所の変更に使います。

# Indexとカラム名のある空のDataFrame
df_e = pd.DataFrame(index=['row_1', 'row_2'], columns=['col_1', 'col_2'])
print(df_e)
#       col_1 col_2
# row_1   NaN   NaN
# row_2   NaN   NaN

df_e.iat[df_e.index.get_loc('row_1'), df_e.columns.get_loc('col_1')] = 2
print(df_e)
#       col_1 col_2
# row_1     2   NaN
# row_2   NaN   NaN

df_e.at['row_1', 'col_2'] = 4
print(df_e)
#       col_1 col_2
# row_1     2     4
# row_2   NaN   NaN

df_e.iloc[df_e.index.get_loc('row_2'), :] = 6
print(df_e)
#       col_1 col_2
# row_1     2     4
# row_2     6     6

df_e.loc[:, 'col_2'] = 8
print(df_e)
#       col_1  col_2
# row_1     2      8
# row_2     6      8