Python

Python初学者向け:データフレームの列の値を書き換える方法を基本から解説します

スポンサーリンク

 

この記事はこんな方におススメです
  • Pythonを始めたばかりで基本から学びたい方
  • Pythonの基本的な部分を速習してまずは全体像を把握しておきたい方

▶ Pandasの基本を解説しています。Series/DataFrameの作り方は以下をご覧ください。

はじめに

今回はデータフレームの列の値を書き換えるときの注意することをまとめていくことにします。データフレームの特定の列の値を書き換えるのはよくおこなう操作だと思いますが、リストやndarrayを使うときと、Seririesを使うといで挙動が違います。この辺を整理していきましょう。

データフレームの列の値を書き換える

データフレームの列の値を配列やSeriesを使って書き換えていきます。まずはサンプルのデータフレームを作っておきましょう。

# ライブラリのインポート
import numpy as np
import pandas as pd

# データフレームの作成
sample_df = pd.DataFrame(np.arange(24).reshape(6,4),columns=['A','B','C','D'])
sample_df
サンプルのデータフレーム

リストやndarrayを代入する

ndarrayを作成してデータフレームのD列に代入してみましょう。

# ndarrayの作成
sample_array = np.arange(6)

# データフレームのD列に代入
sample_df['D'] = sample_array
sample_df
データフレームのD列をsample_arrayで書き換え

赤枠の部分を書き換えることができました。今回はndarrayで試しましたが、リストの場合も同様です。このように列項目は、データフレームの行数と指定したndarrayやリストのサイズが一致していれば、「df[‘列名’] = ndarray」とすることで問題なく書き換えることができます。

Seriesを代入する

次にSeriesの場合を見てみましょう。Seriesの場合は注意が必要です。

# Seriesを作成
sample_ser = pd.Series(sample_array)
sample_ser
サンプルのSeries

このsample_serを使ってデータフレームのC列を書き換えてみましょう。

# データフレームのC列に代入
sample_df['C'] = sample_ser
sample_df
データフレームのC列をsample_serで書き換え

先ほどのsample_arrayの時と同じようにちゃんと書き換えることができました。もう一つサンプルのSeriesを作ってみましょう。

# indexを指定したSeriesの作成
sample_ser2 = pd.Series(sample_array,index=np.arange(3,9))
sample_ser2
sample_ser2

今度はこのsample_ser2を使ってデータフレームのB列を書き換えてみましょう。

# データフレームのB列に代入
sample_df['B'] = sample_ser2
sample_df
データフレームのB列をsample_ser2で書き換え

今度は先ほどのようにはいきません。値が入っているのはindexが3,4,5のものだけです。実はデータフレームの列にSeriesを指定した時には、Serieisのindexがデータフレームの列名indexと一致していないとNaNが代入されます。先ほどのndarrayのときのような挙動を期待していたのに異なる結果になった、というときはこれを確認してみるとよいでしょう。

今回、sample_ser2はindexが3~8まで、データフレームは0~5までだたので、3,4,5だけがindexが一致して書き換えられ、その他の箇所はNaNとなっています。

スポンサーリンク

まとめ

今回はデータフレームの列の値を書き換える方法を扱いました。リストやndarrayを使った代入では行数の指定したリスト(ndarray)のサイズが一致していれば、指定したリスト(ndarray)の値に書き換えられます。

一方、Seriesを使った代入ではindexが一致したもののみが書き換えられ、indexが一致しないものはNaNが代入されるので注意してください。

コメント

タイトルとURLをコピーしました