【Python】Pandasで新しい行を追加する方法:データフレームの拡張を簡単に

はじめに

Pandasは、データ分析で頻繁に使用されるPythonのライブラリです。Pandasを使用すると、CSV、Excel、SQLなどの様々な形式のデータを読み込んだり、データを変換したり、データを分析したりすることができます。

この記事では、Pandasで新しい行を追加する方法について説明します。データフレームを拡張するための基本的な方法から、辞書を使用して新しい行を追加する方法、既存のデータフレームに別のデータフレームの行を追加する方法、行を追加する際のインデックスの設定と調整、条件に基づいて新しい行を追加する方法について解説します。

Pandasで新しい行を追加する基本的な方法

Pandasで新しい行を追加するには、DataFrame.append()メソッドを使用します。このメソッドを使用すると、新しい行をデータフレームの最後に追加できます。

以下は、DataFrame.append()メソッドを使用して新しい行を追加する例です。

import pandas as pd

# データフレームの作成
df = pd.DataFrame({'名前': ['田中', '鈴木', '山田'],
                   '年齢': [20, 25, 30],
                   '性別': ['男性', '女性', '男性']})
# 新しい行の作成
new_row = {'名前': '佐藤', '年齢': 35, '性別': '女性'}
# 新しい行をデータフレームに追加
df = df.append(new_row, ignore_index=True)
print(df)

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

   名前  年齢  性別
0  田中  20  男性
1  鈴木  25  女性
2  山田  30  男性
3  佐藤  35  女性

ここで、ignore_index=Trueを指定することで
、新しい行のインデックスが自動的に設定され、既存のデータフレームの最後に追加されることがわかります。

辞書を用いて新しい行を追加する方法

上記の例では、新しい行を辞書形式で定義しました。辞書形式を使用することで、データフレームに追加する新しい行のカラム名と値を簡単に指定できます。

new_row = {'名前': '佐藤', '年齢': 35, '性別': '女性'}

また、Seriesオブジェクトを使用することもできます。

new_row = pd.Series(['佐藤', 35, '女性'], index=['名前', '年齢', '性別'])

これにより、新しい行を以下のように追加できます。

df = df.append(new_row, ignore_index=True)

既存のデータフレームに別のデータフレームの行を追加する方法

別のデータフレームから新しい行を追加する場合、DataFrame.append()メソッドを使用することもできます。この場合、新しい行を追加するデータフレームと既存のデータフレームのカラム名が一致している必要があります。

以下は、新しい行を含むデータフレームを作成し、既存のデータフレームに追加する例です。

import pandas as pd

# 既存のデータフレームの作成
df1 = pd.DataFrame({'名前': ['田中', '鈴木', '山田'],
                   '年齢': [20, 25, 30],
                   '性別': ['男性', '女性', '男性']})
# 新しい行を含むデータフレームの作成
df2 = pd.DataFrame({'名前': ['佐藤'],
                   '年齢': [35],
                   '性別': ['女性']})
# 既存のデータフレームに新しい行を追加
df1 = df1.append(df2, ignore_index=True)
print(df1)

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

   名前  年齢  性別
0  田中    20  男性
1  鈴木    25  女性
2  山田    30  男性
3  佐藤    35  女性

このように、DataFrame.append()メソッドを使用することで、既存のデータフレームに別のデータフレームの行を簡単に追加することができます。

行を追加する際のインデックスの設定と調整

データフレームに新しい行を追加する場合、インデックスを指定することができます。また、既存のデータフレームのインデックスと新しい行のインデックスが一致しない場合、インデックスを調整することもできます。

以下は、新しい行のインデックスを指定し、インデックスを調整する例です。

import pandas as pd

# 既存のデータフレームの作成
df = pd.DataFrame({'名前': ['田中', '鈴木', '山田'],
                   '年齢': [20, 25, 30],
                   '性別': ['男性', '女性', '男性']},
                   index=['a', 'b', 'c'])
# 新しい行の作成
new_row = {'名前': '佐藤', '年齢': 35, '性別': '女性'}
# 新しい行をデータフレームに追加
df = df.append(new_row, ignore_index=True)
# 新しい行のインデックスを指定
df = df.set_index(pd.Index(['a', 'b', 'c', 'd']))

print(df)

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

   名前  年齢  性別
a  田中  20  男性
b  鈴木  25  女性
c  山田  30  男性
d  佐藤  35  女性

ここでは、set_index()メソッドを使用して新しい行のインデックスを指定し、既存のデータフレームのインデックスと新しい行のインデックスが一致するように調整しました。

条件に基づいて新しい行を追加する方法

新しい行を追加する際に、条件に基づいて追加することもできます。この場合、DataFrame.loc[]を使用して、条件に一致する場所に新しい行を追加します。

以下は、条件に基づいて新しい行を追加する例です。

import pandas as pd

# 既存のデータフレームの作成
df = pd.DataFrame({'名前': ['田中', '鈴木', '山田'],
'年齢': [20, 25, 30],
'性別': ['男性', '女性', '男性']})
# 条件に一致する場所に新しい行を追加
df.loc[df['名前'] == '鈴木', :] = ['佐藤', 35, '女性']

print(df)

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

   名前  年齢  性別
0  田中  20  男性
1  佐藤  35  女性
2  山田  30  男性

このように、DataFrame.loc[]を使用することで、条件に一致する場所に新しい行を追加することができます。

まとめ

Pandasを使用して新しい行を追加する方法について説明しました。基本的な方法から、辞書を使用して新しい行を追加する方法、既存のデータフレームに別のデータフレームの行を追加する方法、行を追加する際のインデックスの設定と調整、条件に基づいて新しい行を追加する方法について解説しました。Pandasを使用することで、データフレームの拡張を簡単に行うことができます。