Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで条件に基づいてPandasデータフレームに新しい列を作成する方法

Pythonプログラムにおいて、Pandasはデータフレームを作成してデータを処理します。本記事では、既存のデータフレームに対して、特定の条件に基づいて新しい列を追加する方法を解説します。

元となるデータフレーム

以下は、今回新しい列を追加していくPandasのデータフレームです。試験の曜日と科目を表すシンプルなデータとなっています。

サンプルコード

import pandas as pd

# 試験科目と曜日のリスト
Days = ['Mon', 'Tue', 'Wed','Thu', 'Fri']
Sub = ['Chemisry','Physics','Maths','English','Biology']

# 試験スケジュールの辞書
Exam_Subjects = {'Exam Day': Days,
                 'Exam Subject': Sub}

# 辞書からデータフレームへ変換
Exam_Subjects_df = pd.DataFrame(Exam_Subjects)
print(Exam_Subjects_df)

実行結果

上記のコードを実行すると、次のような出力が得られます。

    Exam Day  Exam Subject
0   Mon       Chemisry
1   Tue       Physics
2   Wed       Maths
3   Thu       English
4   Fri       Biology

条件に基づいて新しい列を追加する

続いて、試験の時刻を示す新しい列を追加してみましょう。ここではif文を使った条件分岐を活用し、「Time」という名前の追加列を作成します。

具体的には、リスト内包表記の中で条件式を記述し、Exam Day(試験日)の値が「Mon」または「Thu」であれば「2 PM」を、それ以外の場合は「10 AM」を設定しています。このように、既存の列の値を参照しながら条件判定を行うことで、柔軟に新しい列を生成できます。

サンプルコード

import pandas as pd

# 試験科目と曜日のリスト
Days = ['Mon', 'Tue', 'Wed','Thu', 'Fri']
Sub = ['Chemisry','Physics','Maths','English','Biology']

# 試験スケジュールの辞書
Exam_Subjects = {'Exam Day': Days,
                 'Exam Subject': Sub}

# 辞書からデータフレームへ変換
Exam_Subjects_df = pd.DataFrame(Exam_Subjects)

# 条件に基づいてTime列を追加
Exam_Subjects_df['Time'] = ['2 PM' if x in('Mon','Thu') else '10 AM' for x in Exam_Subjects_df['Exam Day']]
print(Exam_Subjects_df)

実行結果

上記のコードを実行すると、次のような出力が得られます。

  Exam Day   Exam Subject  Time
0  Mon       Chemisry      2 PM
1  Tue       Physics       10 AM
2  Wed       Maths         10 AM
3  Thu       English       2 PM
4  Fri       Biology       10 AM

まとめ

このように、リスト内包表記とif文を組み合わせることで、既存の列の値に応じた条件分岐を行い、データフレームに新しい列を簡単に追加できます。より複雑な条件や大量のデータを扱う場合には、NumPyのnp.where()関数やdf.apply()メソッド、あるいはnp.select()を使った複数条件の分岐なども便利なので、用途に応じて使い分けるとよいでしょう。

  1. Pandasで既存のDataFrameに新しい列を追加する3つの方法

    はじめにこのチュートリアルでは、Pythonのデータ分析ライブラリ「pandas」において、既存のDataFrameに新しい列を追加する方法を解説します。新しい列を追加するアプローチは複数あり、それぞれに特徴があります。ここでは代表的な3つの方法を、コード例と実行結果とともに順番に見ていきましょう。方法1:リストを使って追加する最もシンプルなのが、Pythonのリストをそのまま列として代入する方法です。以下の手順で行います。手順辞書を使ってDataFrameを作成する。新しい列のデータを含むリストを作成する。リストの長さが、すでにDataFrame内にあるデータの行数と一致している必要がある点

  2. 【Python】PandasのDataFrameで列の文字列を大文字に変換する方法

    このチュートリアルでは、PandasのDataFrame(データフレーム)内の特定の列(例えば名前の列)をすべて大文字に変換する方法を解説します。主な方法は2つあり、それぞれコード例と実行結果とともに紹介します。方法1:str.upper() を使う方法Pandasでは、文字列型(object型)の列に対して .str アクセサを使うことで、Python標準の文字列メソッドを各要素に一括適用できます。大文字への変換には str.upper() を使用します。コード例# pandasパッケージをインポート import pandas as pd # DataFrame用のデータ data =