Python Pandasのeval()関数で行の合計を評価・計算する方法
eval()関数で行の合計を求める
Pandasのeval()関数は、文字列で記述した数式をDataFrameに対して直接評価できる便利な機能です。これを利用すると、指定した複数の列の値を足し合わせた行ごとの合計を、新しい列として簡単に追加できます。
まずは、商品の在庫データを含むDataFrameを作成しましょう。
dataFrame = pd.DataFrame({"Product": ["SmartTV", "ChromeCast", "Speaker", "Earphone"],
"Opening_Stock": [300, 700, 1200, 1500],
"Closing_Stock": [200, 500, 1000, 900]})
続いて、eval()を使って合計を求めます。ポイントは、結果を格納する新しい列名(ここでは「Result_Sum」)も式の中で指定することです。式には、その列に代入される合計計算の公式がそのまま記述されます。
dataFrame = dataFrame.eval('Result_Sum = Opening_Stock + Closing_Stock')
この1行だけで、「Opening_Stock」と「Closing_Stock」の各行の値を加算した結果が、「Result_Sum」という新しい列としてDataFrameに自動的に追加されます。
サンプルコード(完全版)
以下が、最初から最後までの一連のコードです。
import pandas as pd
dataFrame = pd.DataFrame({"Product": ["SmartTV", "ChromeCast", "Speaker", "Earphone"],
"Opening_Stock": [300, 700, 1200, 1500],
"Closing_Stock": [200, 500, 1000, 900]})
print("DataFrame...\n", dataFrame)
# eval()を使って行の合計を求める
# 結果を格納する新しい列名もeval()の中で指定する
# 式には合計を計算する公式がそのまま記述されている
dataFrame = dataFrame.eval('Result_Sum = Opening_Stock + Closing_Stock')
print("\nSumming rows...\n", dataFrame)
実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame...
Product Opening_Stock Closing_Stock
0 SmartTV 300 200
1 ChromeCast 700 500
2 Speaker 1200 1000
3 Earphone 1500 900
Summing rows...
Product Opening_Stock Closing_Stock Result_Sum
0 SmartTV 300 200 500
1 ChromeCast 700 500 1200
2 Speaker 1200 1000 2200
3 Earphone 1500 900 2400
出力を見ると、各行の「Opening_Stock」と「Closing_Stock」の合計が「Result_Sum」列に正しく計算されていることが確認できます(例:SmartTVの場合は 300 + 200 = 500)。
まとめ
eval()関数を使えば、列同士の演算を簡潔な文字列式として記述でき、その結果を新しい列として手軽に追加できます。特に大規模なデータセットを扱う場合、通常の演算子による処理よりも高速に動作することがあるため、可読性とパフォーマンスの両面でメリットのある手法です。
-
Python Pandas入門:TimedeltaIndex.componentsでタイムデルタの構成要素をDataFrameとして取得する方法
TimedeltaIndexの各要素を「日・時・分・秒・ミリ秒・マイクロ秒・ナノ秒」といった構成要素(コンポーネント)に分解し、その結果をDataFrameとして取得したい場合は、TimedeltaIndex.componentsプロパティを使用します。 この記事では、実際のコード例とともに、componentsプロパティの使い方と出力結果をわかりやすく解説します。 必要なライブラリのインポート まず、pandasをインポートします。 import pandas as pd TimedeltaIndexオブジェクトの作成 次に、TimedeltaIndexオブジェクトを作成します。dataパラ
-
【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方
PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存