pandasのDataFrameにassign()で列を追加する

assign()で列追加

assign()を使って、列の値を変更あるいは新規列の追加が可能。

import pandas as pd  

df = pd.DataFrame({  
    'hoge': [0, 1, 2, 'one'],  
    'fuga': [3, 4, 5, 'two'],  
    'piyo': [6, 7, 8, 'three']  
}, index=['foo', 'bar', 'baz', 'qux'])  

print(df)  

# 既存列を置き換える  

new_df = df.assign(foo=9)  

print(new_df)  

# 新規列を追加する  

new_df = df.assign(spam='hogera')  

print(new_df)  

# lambda式で新規列を追加する  

new_df = df.assign(ham=lambda x: x.hoge + x.fuga + x.piyo)  

print(new_df)  

# 元のDataFrameはそのまま  

print(df)  

出力結果は下記のような感じ。

    hoge fuga   piyo  
foo    0    3      6  
bar    1    4      7  
baz    2    5      8  
qux  one  two  three  
    hoge fuga   piyo  foo  
foo    0    3      6    9  
bar    1    4      7    9  
baz    2    5      8    9  
qux  one  two  three    9  
    hoge fuga   piyo    spam  
foo    0    3      6  hogera  
bar    1    4      7  hogera  
baz    2    5      8  hogera  
qux  one  two  three  hogera  
    hoge fuga   piyo          ham  
foo    0    3      6            9  
bar    1    4      7           12  
baz    2    5      8           15  
qux  one  two  three  onetwothree  
    hoge fuga   piyo  
foo    0    3      6  
bar    1    4      7  
baz    2    5      8  
qux  one  two  three