いろいろな空のDataFrame
空の DataFrame を作るときに、どうだったけ? となるので、ここにバリエーションを残したいと思います。
Index とカラム名のない空の DataFrame、カラム名ありの空の DataFrame、Index ありの空の DataFrame、Index とカラム名のある空の DataFrame の4つでしょうか。
Python
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に値を入力する。
pandas を使っていないと、DataFrame の扱いをすぐに忘れてしまうので、やってみます。
Python
# 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
これだけ残しておけば、久しぶりに DataFrame を使っても、思い出せそうです。
iat, at, iloc, loc
ここまでやったら、iat/at/iloc/loc の使い方も復習しておきます。
iat/at は一箇所の変更、iloc/loc は複数箇所の変更に使います。
Python
# 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