スポンサーリンク
pandasのDataFrameで列を追加して、1行ずつ値を代入していく方法
サンプルコード
まずはサンプルコードになります。
下記が入力ファイル。
$ cat in.txt 20170101,38 20160202,28 20180303,10
下記がサンプルコードになります。
$ cat sample.py #!/usr/bin/env python3 # coding: UTF-8 import pandas as pd data = pd.read_csv('in.txt', names=('Date', 'Value'), index_col='Date', parse_dates=True) print("dataの中身を出力") print (data) print("") print ("Addの列を追加") data = data.assign(Add = 0) print (data) print("") print("Addの列に1を代入") for index, row in data.iterrows(): data['Add'][index] = 1 print(data)
下記が実行結果になります。
$ ./sample.py dataの中身を出力 Value Date 2017-01-01 38 2016-02-02 28 2018-03-03 10 Addの列を追加 Value Add Date 2017-01-01 38 0 2016-02-02 28 0 2018-03-03 10 0 Addの列に1を代入 Value Add Date 2017-01-01 38 1 2016-02-02 28 1 2018-03-03 10 1
下記にサンプルコードの解説をしたいと思います。
スポンサーリンク
pandas.read_csv()でcsvデータを読み込み
まずは、pandas.read_csv()でcsvデータを読み込み、DataFrameを作成します。
data = pd.read_csv('in.txt', names=('Date', 'Value'), index_col='Date', parse_dates=True) print("dataの中身を出力") print (data)
DataFrameの中身は下記になります。
dataの中身を出力 Value Date 2017-01-01 38 2016-02-02 28 2018-03-03 10
DataFrame.assign()でDataFrameに列を追加
ここでは、列名がAddの列を、0で初期化して追加しています。
print ("Addの列を追加") data = data.assign(Add = 0) print (data)
DataFrameの中身は下記のようになります。
Addの列を追加 Value Add Date 2017-01-01 38 0 2016-02-02 28 0 2018-03-03 10 0
for index, row in DataFrame.iterrows()の形式で1行ずつ参照
DataFrame.iterrows()とforループ処理を組み合わせて、indexと行を参照します。
そして、Addの列に1を代入しています。
print("Addの列に1を代入") for index, row in data.iterrows(): data['Add'][index] = 1 print(data)
Addの列に1に置き換わっているのが確認できます。
Addの列に1を代入 Value Add Date 2017-01-01 38 1 2016-02-02 28 1 2018-03-03 10 1
スポンサーリンク