pandasTweetpandas.DataFrameに新たな列または行を追加する方法を説明する。新規の列名・行名を指定して追加する、pandas.DataFrameのassign()メソッド、append()メソッドで追加する、などの方法がある。pandas.Seriesを連結するpandas.concat()関数についても触れるが、詳細は以下の記事を参照。Seriesを連結するconcat今回の説明では以下のオブジェクトを生成して使う。pandas_add_column.py説明する内容は以下の通り。新規列名を指定して追加[列名]で列を選択して値を代入できる。pandas_add_column.pyここにまだ存在しない列名を指定することで、その列を追加して値を代入することができる。スカラーを追加スカラーの場合、すべての要素がその値となる。pandas_add_column.pyベクトルを追加リストなどのベクトルの場合、そのまま代入される。pandas_add_column.py要素数と行数が一致していないとエラー(ValueError)になる。pandas_add_column.pypandas.Seriesを追加pandas.SeriesでもOK。pandas.DataFrameの各列を参照するとpandas.Seriesとして扱われるので、それらの演算結果やメソッドで処理した結果なども代入できる。pandas_add_column.pypandas.Seriesのラベルindexがpandas.DataFrameの列名indexと一致していない場合は欠損値NaNが代入される。pandas_add_column.pyvalues属性でNumPy配列numpy.ndarray型を取得して代入すると、ベクトルの場合と同様、要素が順番に代入される。pandas_add_column.pyassign()メソッドで追加・代入pandas.DataFrameに新たな列を追加したり既存の列に新たな値を代入したりするためのメソッドとしてassign()が用意されている。documentation再度オブジェクトを生成し、assign()メソッドの使い方を説明する。pandas_add_column.pyassign()メソッドでは、キーワード引数列名=値で列名とその値を指定する。既存の列名の場合は値が代入され、新規の列名の場合は新たな列が追加される。pandas_add_column.py新たなオブジェクトが返され、元のオブジェクトは変更されない。pandas_add_column.py上述の例のように、リストやpandas.Seriesなども値として指定可能。複数列を一括で追加・代入できる。pandas_add_column.pyなお、assign()メソッドを使う場合、列名がPythonの文法において引数名として使えるものに限定されるので注意。数値から始まる名前や、アンダースコア_以外の記号を含む名前、予約語などはエラーになる。Pythonで引数名として使える名前については以下の記事を参照。DataFrameを横に連結これまでの例ではpandas.Seriesを追加する場合、そのname属性は無視された。pandas.concat()関数で引数axis=1として横方向に連結すると、pandas.Seriesのnameがpandas.DataFrameの列名となる。pandas.concat()の第一引数に連結したいオブジェクトのリストやタプルを指定する。pandas_add_column.py引数join='inner'として共通の行名の行のみを残すことも可能。pandas_add_column.py複数のpandas.Seriesを連結したり、pandas.DataFrameを連結したりすることもできる。pandas_add_column.pypandas.concat()関数についての詳細は以下の記事を参照。新規行名を指定して追加iloc[行名]で行を選択して値を代入できる。pandas_add_row.py列の場合と同様に、ここにまだ存在しない行名を指定することで、その行を追加して値を代入することができる。スカラーを追加スカラーの場合、すべての要素がその値となる。pandas_add_row.pyベクトルを追加リストなどのベクトルの場合、そのまま代入される。pandas_add_row.py要素数と列数が一致していないとエラー(ValueError)になる。pandas_add_row.pypandas.Seriesを追加pandas.SeriesでもOK。ラベルが一致しないときに欠損値NaNが代入されるなど、列の場合と同様に処理される。pandas_add_row.pyappend()メソッドで追加pandas.DataFrameに新たな行を追加するために、メソッドappend()が用意されている。documentation再度オブジェクトを生成し、append()メソッドの使い方を説明する。pandas_add_row.py第一引数に追加するオブジェクトを指定する。pandas.Seriesを追加する場合、元のpandas.DataFrameの列名columnsとpandas.Seriesのラベルindexが対応する。一致しない場合は欠損値NaNが代入される。pandas.Seriesのname属性が新たな行名となる。pandas_add_row.py新たなオブジェクトが返され、元のオブジェクトは変更されない。pandas_add_row.pypandas.Seriesにname属性が設定されていないとエラー(TypeError)となり追加できないので注意。pandas_add_row.py第一引数にリストやタプルを指定すると、複数のオブジェクトを追加できる。pandas_add_row.pypandas.DataFrameも指定できる。DataFrameを縦に連結append()メソッドと同様にpandas.DataFrame同士の連結はpandas.concat()関数でも可能。pandas.concat()の第一引数に連結したいオブジェクトのリストやタプルを指定する。デフォルトで縦方向に連結される。pandas_add_row.py引数join='inner'として共通の列名の列のみを残すことも可能。pandas_add_row.pypandas.DataFrameとpandas.Seriesの縦方向の連結は注意が必要。append()メソッドを使うと以下のように追加される。pandas_add_row.pypandas.concat()関数の場合は以下のようになる。pandas_add_row.pypandas.Seriesからpandas.DataFrameを生成しさらに転置すればpandas.concat()で連結できるが、append()メソッドを使うほうが素直。pandas_add_row.pypandas.concat()関数についての詳細は以下の記事を参照。行の追加にもassign()メソッドを使用したい場合は、pandas.DataFrameを転置してからassign()メソッドを使用し、さらに転置してもとに戻すという方法も可能。