[pandas]DataFrameで行列の追加/結合

pandasのDataFrame型における行列の追加/結合方法を記載する。

ただし、ここではJoinやMerge等の連結は説明しない。そちらは別途説明を記載する。

Udemy >> 現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

まとめ

# 列の追加 --> 新しい列名で指定すればよし!
DataFrame型['新しい列名'] = DataFrame型 or Series型 or Numpy型 or リスト型(配列系で要素数が合えばなんでもよし)

# 列の連結 --> concatを使えばよし!
DataFrame型 = pd.concat([DataFrame型1,DataFrame型2],axis=1)

# 行の追加/連結 --> concatを使えばよし!
DataFrame型 = pd.concat([DataFrame型1,DataFrame型2],axis=0)

列の追加

書き方

以下のようにDataFrame型に対して新しい列名を指定し列を追加できる。

DataFrame型['新しい列名'] = DataFrame型 or Series型 or Numpy型 or リスト型(配列系で要素数が合えばなんでもよし)

サンプルコード

# サンプル
import pandas as pd

list_data = [[1, 'apple cake'],[2, 'orange cake'],[3, 'lemon pie']] 
df_data = pd.DataFrame(list_data, columns=["id","name"])

list_price = [100,30,50]

# df_dataにprice列を追加する
df_data['price'] = list_price
print(df_data)

## 出力
#    id         name  price
# 0   1   apple cake    100
# 1   2  orange cake     30
# 2   3    lemon pie     50

Udemy >> Streamlit, Pandas, Pythonで学ぶ!データ分析の基礎とインタラクティブダッシュボード作成入門

列の連結

書き方

以下のようにConcat()でaxis=1を指定して列を連結できる。「列の追加」では1列しか追加できなかったが、DataFrame型2に追加したいデータを格納すれば複数の列の追加ができる。(ここではこれを連結と表現している)

DataFrame型 = pd.concat([DataFrame型1,DataFrame型2],axis=1)

サンプルコード

# サンプル
import pandas as pd

list_data = [[1, 'apple cake'],[2, 'orange cake'],[3, 'lemon pie']] 
df_data = pd.DataFrame(list_data, columns=["id","name"])

df_newcol = pd.DataFrame([[100, 3],[30, 10],[50, 2]], columns=["price","amount"])

# df_dataに新たな行を追加(連結)する
df_data = pd.concat([df_data,df_newcol], axis=1)
print(df_data)

## 出力
#    id         name  price  amount
# 0   1   apple cake    100       3
# 1   2  orange cake     30      10
# 2   3    lemon pie     50       2

行の追加/連結

書き方

以下のようにconcat()でaxis=0を指定することでDataFrame型同士の連結ができる。

DataFrame型 = pd.concat([DataFrame型1,DataFrame型2],axis=0)

サンプルコード

# サンプル
import pandas as pd

list_data = [[1, 'apple cake'],[2, 'orange cake']] 
df_data = pd.DataFrame(list_data, columns=["id","name"])

df_newdata = pd.DataFrame([[3, 'lemon pie'],[4, 'peach pie']], columns=["id","name"])

# df_dataに新たな行を追加(連結)する
df_data = pd.concat([df_data,df_newdata], axis=0)
print(df_data)

## 出力
#    id         name
# 0   1   apple cake
# 1   2  orange cake
# 0   3    lemon pie
# 1   4    peach pie

まとめ

# 列の追加 --> 新しい列名で指定すればよし!
DataFrame型['新しい列名'] = DataFrame型 or Series型 or Numpy型 or リスト型(配列系で要素数が合えばなんでもよし)

# 列の連結 --> concatを使えばよし!
DataFrame型 = pd.concat([DataFrame型1,DataFrame型2],axis=1)

# 行の追加/連結 --> concatを使えばよし!
DataFrame型 = pd.concat([DataFrame型1,DataFrame型2],axis=0)

Udemy >> 【世界で37万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜