スポンサーリンク

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

スポンサーリンク