Pandasで既存のDataFrameに新しい列を追加する方法
PandasのDataFrameは2次元のデータ構造で、データが行と列からなる表形式で整然と配置されます。Pythonの辞書(dict)、リスト(list)、Seriesなどを用いて作成できます。この記事では、既存のDataFrameに新しい列を追加する方法を、具体的なコード例とともに解説します。
準備:SeriesからDataFrameを作成する
まず、pandasのSeriesを使って基本的なDataFrameを作成しましょう。以下の例では、pandasのSeriesを1列だけのDataFrameに変換し、「Month_No」という列名を付けています。
コード例
import pandas as pd s = pd.Series([6,8,3,1,12]) df = pd.DataFrame(s,columns=['Month_No']) print (df)
実行結果
上記のコードを実行すると、次の出力が得られます。
Month_No 0 6 1 8 2 3 3 1 4 12
insert()関数を使って任意の位置に列を挿入する
pandasのinsert()関数を使用すると、指定したインデックス位置に新しい列を挿入できます。第1引数に挿入位置、第2引数に列名、第3引数に値のリストを渡します。
以下の例では、既存のDataFrameに対して、インデックス位置1に「No_of_days」(月の日数)という列を追加しています。
コード例
import pandas as pd s = pd.Series([6,8,3,1,12]) df = pd.DataFrame(s,columns=['Month_No']) # インデックス位置1に新しい列を挿入 df.insert(1,"No_of_days",[30,31,31,31,31],True) print (df)
実行結果
上記のコードを実行すると、次の出力が得られます。
Month_No No_of_days 0 6 30 1 8 31 2 3 31 3 1 31 4 12 31
なお、insert()関数の第4引数には重複した列名を許可するかどうかを指定します。ここではTrueを設定しているため、同名の列が存在してもエラーになりません。
assign()関数を使って末尾に列を追加する
assign()関数は、新しい列をDataFrameの末尾に追加するためのメソッドです。insert()とは異なり、元のDataFrameを変更せず、新しい列が追加された新しいDataFrameを返す点が特徴です。そのため、メソッドチェーンの中で列を追加したい場合に特に便利です。
コード例
import pandas as pd s = pd.Series([6,8,3,1,12]) df = pd.DataFrame(s,columns=['Month_No']) # 新しい列を末尾に追加 df = df.assign(No_of_days = [30,31,31,31,31]) print (df)
実行結果
上記のコードを実行すると、次の出力が得られます。
Month_No No_of_days 0 6 30 1 8 31 2 3 31 3 1 31 4 12 31
まとめ
Pandasで既存のDataFrameに新しい列を追加する主な方法は以下の2つです。
- insert():任意のインデックス位置に列を挿入したい場合に使用。元のDataFrame自体が変更されます。
- assign():列を末尾に追加し、かつ元のDataFrameを保持したまま新しいDataFrameを取得したい場合に使用。メソッドチェーンとの相性も抜群です。
用途に応じてこれらの関数を使い分けることで、より柔軟かつ効率的にデータ操作を行えます。
-
Pandas DataFrameの列の先頭文字を大文字に変換する方法
pandasのDataFrame(データフレーム)は、行と列で構成される表形式のデータ構造です。データ処理を行っていると、特定の列に含まれる文字列の先頭文字だけを大文字に変換したい場面に出会うことがあります。この記事では、pandasを使って列の先頭文字を大文字化する方法を解説します。 データフレームの作成 まず、例として「Day」(曜日)と「Subject」(科目)という2つの列を持つデータフレームを作成します。 サンプルコード import pandas as pd # データフレームを作成 df = pd.DataFrame({Day: [mon, tue, wed, thu, fri
-
【Pandas】DataFrameの列の文字列を大文字に変換する方法
Pandasでは、DataFrameの文字列型の列に含まれる値をまとめて大文字に変換したい場面がよくあります。本記事では、str.upper()メソッドを使う方法と、apply()メソッドにラムダ式を組み合わせる方法の2つを、具体的なコード例とともに解説します。 方法1:str.upper()を使う .str.upper()は、Series内のすべての文字列要素を一括で大文字に変換できるシンプルかつ高速な方法です。文字列アクセサ(.str)を介して呼び出すため、コードも非常に読みやすくなります。 例 import pandas as pd # データフレームを作成 df = pd.DataF