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
列の連結
書き方
以下のように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)