[pandasデータフレームの文字列エントリを分割(explode)して別々の行にする]

PYTHON3 チュートリアル

pandasでデータフレームの文字列エントリを分割して行に展開する方法

Pythonのデータ処理ライブラリであるpandasは、データの操作や分析に非常に便利な機能を提供しています。その中でも、データフレーム内の文字列エントリを分割して別々の行に展開する方法は、データの整形や前処理において非常に役立ちます。このプロセスは「explode」と呼ばれ、一つのセルに複数の値が含まれている場合に特に有用です。この記事では、この方法を具体的な例とともに解説します。

基本的なexplodeの使い方

pandasのexplodeメソッドは、リストやセットのようなコレクションを含む列を持つデータフレームに対して適用できます。まずは基本的な使い方を見てみましょう。

import pandas as pd

# サンプルデータフレームの作成
df = pd.DataFrame({
    'id': [1, 2, 3],
    'fruits': ['apple,banana', 'orange', 'grape,apple,banana']
})

# 文字列を分割してリストに変換
df['fruits'] = df['fruits'].str.split(',')

# explodeメソッドを使用して行に展開
exploded_df = df.explode('fruits')

print(exploded_df)

このコードを実行すると、以下のような出力が得られます。

   id  fruits
0   1   apple
0   1  banana
1   2  orange
2   3   grape
2   3   apple
2   3  banana

複数の列を同時にexplodeする方法

explodeメソッドは通常、単一の列に対して動作しますが、複数の列を同時に展開したい場合もあります。その場合は、各列に対して個別にexplodeを適用する必要があります。

# サンプルデータフレームの作成
df = pd.DataFrame({
    'id': [1, 2],
    'fruits': ['apple,banana', 'orange'],
    'colors': ['red,green', 'orange']
})

# 文字列を分割してリストに変換
df['fruits'] = df['fruits'].str.split(',')
df['colors'] = df['colors'].str.split(',')

# 各列に対してexplodeを適用
exploded_df = df.explode('fruits').explode('colors')

print(exploded_df)

このコードを実行すると、以下のような出力が得られます。

   id  fruits  colors
0   1   apple     red
0   1   apple   green
0   1  banana     red
0   1  banana   green
1   2  orange  orange

インデックスをリセットして整形する方法

explodeを使用した後は、インデックスが重複することがあります。この場合、reset_indexメソッドを使用してインデックスをリセットし、データフレームを整形することができます。

# インデックスをリセット
exploded_df = exploded_df.reset_index(drop=True)

print(exploded_df)

インデックスをリセットすることで、次のような出力が得られます。

   id  fruits  colors
0   1   apple     red
1   1   apple   green
2   1  banana     red
3   1  banana   green
4   2  orange  orange

まとめ

pandasのexplodeメソッドは、データフレーム内のリストやセットを含む列を展開して、データをより扱いやすくするための強力なツールです。特にデータの前処理や整形において、その利便性を発揮します。この記事で紹介した例を参考に、様々なデータセットに対して適用してみてください。

pandasデータフレームの文字列エントリを分割(explode)して別々の行にするとは、データフレーム内の特定の列に含まれる文字列を分割し、それぞれを別々の行として新しいデータフレームを作成する操作です。この操作は、1つのセルに複数の値が含まれる場合や、リストや配列のような形式でデータが格納されている場合に便利です。

pandasでは、文字列を分割して別々の行にするために、`str.split()`メソッドを使用します。このメソッドを適用することで、指定した区切り文字やパターンに基づいて文字列を分割し、それぞれの要素を別々の行として持つ新しいデータフレームを生成することができます。

例えば、”A,B,C”という文字列が1つのセルに含まれる列がある場合、`str.split(“,”)`を用いることで、この文字列をカンマで分割し、”A”、”B”、”C”という3つの要素を持つ新しい行を生成することができます。

このようにして、pandasデータフレームの文字列エントリを分割して別々の行にすることで、データの整形や処理を効率的に行うことができます。

購読
通知
0 Comments
Inline Feedbacks
View all comments