【Pandas】DataFrameの列の文字列を大文字に変換する方法
Pandasでは、DataFrameの文字列型の列に含まれる値をまとめて大文字に変換したい場面がよくあります。本記事では、str.upper()メソッドを使う方法と、apply()メソッドにラムダ式を組み合わせる方法の2つを、具体的なコード例とともに解説します。
方法1:str.upper()を使う
.str.upper()は、Series内のすべての文字列要素を一括で大文字に変換できるシンプルかつ高速な方法です。文字列アクセサ(.str)を介して呼び出すため、コードも非常に読みやすくなります。
例
import pandas as pd
# データフレームを作成
df = pd.DataFrame({'Day': ['mon', 'tue', 'wed', 'thu', 'fri'],
'Subject': ['Math', 'english', 'science', 'music', 'games']})
# Day列を大文字に変換
df['Day'] = df['Day'].str.upper()
print(df)
出力
上記のコードを実行すると、以下の結果が得られます。
Day Subject 0 MON Math 1 TUE english 2 WED science 3 THU music 4 FRI games
Day列のすべての曜日名が「MON」「TUE」のように大文字に変換されていることがわかります。Subject列は元のまま変更されていません。
方法2:apply()とlambda式を使う
apply()メソッドとラムダ式を組み合わせると、各要素に対して任意の関数を柔軟に適用できます。単純な大文字変換だけでなく、より複雑な処理を組み合わせたい場合に便利です。
例
# データフレームを作成
df = pd.DataFrame({'Day': ['mon', 'tue', 'wed', 'thu', 'fri'],
'Subject': ['Math', 'english', 'science', 'music', 'games']})
# Subject列の各要素を大文字に変換
df1 = df['Subject'].apply(lambda x: x.upper())
print(df1)
出力
上記のコードを実行すると、以下の結果が得られます。
0 MATH 1 ENGLISH 2 SCIENCE 3 MUSIC 4 GAMES Name: Subject, dtype: object
この例では新しい変数df1に結果を代入しているため、元のDataFrameであるdf自体は変更されません。元のデータを保持したい場合に有効なアプローチです。
2つの方法の使い分け
- str.upper():文字列専用に最適化されたベクトル化メソッドで、処理が高速。欠損値(NaN)も自動的に適切に扱われるため、通常はこちらを推奨します。
- apply(lambda x: x.upper()):任意のPython関数を適用できる汎用的な方法。条件分岐や複数の処理を組み合わせたカスタム変換を行いたい場合に選択します。
用途に応じてこれらの方法を使い分けることで、Pandasでの文字列データ処理を効率的に行えます。
-
Pandasで既存のDataFrameに新しい列を追加する方法
PandasのDataFrameは2次元のデータ構造で、データが行と列からなる表形式で整然と配置されます。Pythonの辞書(dict)、リスト(list)、Seriesなどを用いて作成できます。この記事では、既存のDataFrameに新しい列を追加する方法を、具体的なコード例とともに解説します。 準備:SeriesからDataFrameを作成する まず、pandasのSeriesを使って基本的なDataFrameを作成しましょう。以下の例では、pandasのSeriesを1列だけのDataFrameに変換し、「Month_No」という列名を付けています。 コード例 import pandas
-
Pandas DataFrameの列の先頭文字を大文字に変換する方法
pandasのDataFrame(データフレーム)は、行と列で構成される表形式のデータ構造です。データ処理を行っていると、特定の列に含まれる文字列の先頭文字だけを大文字に変換したい場面に出会うことがあります。この記事では、pandasを使って列の先頭文字を大文字化する方法を解説します。 データフレームの作成 まず、例として「Day」(曜日)と「Subject」(科目)という2つの列を持つデータフレームを作成します。 サンプルコード import pandas as pd # データフレームを作成 df = pd.DataFrame({Day: [mon, tue, wed, thu, fri