以下のようなことがしたいと考えています。
python
1import pandas as pd 2sample_df = pd.DataFrame({'hoge': [1, 2, 3]}) 3 4# これならできる 5# sample_df['added1'] = [2, 3, 4] 6 7# しかしこれはできない(これがしたい) 8sample_df[['added1', 'added2']] = [2, 3, 4], [3, 4, 5] 9# => error
代替策1
※要件を満たさない
python
1import pandas as pd 2sample_df = pd.DataFrame({'hoge': [1, 2, 3]}) 3 4add_df = pd.DataFrame({'added1': [2, 3, 4], 'added2': [3, 4, 5]}) 5sample_df = pd.concat([sample_df, add_df], axis=1) 6# しかし求めているのはこれではない
なぜ代替策1ではだダメなのかというと、この方法ではDataFrameが新しく作られており、既存のDataFrameに列が追加されるわけではないからです。
やりたいのは、既存のDataFrameに複数の列をまとめて追加することです。
そこで、次のようなソースを書かざるを得ないのが現状です。
代替策2
※一応要件は満たす
python
1import pandas as pd 2sample_df = pd.DataFrame({'hoge': [1, 2, 3]}) 3 4sample_df['added1'] = [2, 3, 4] 5sample_df['added2'] = [3, 4, 5]
代替策2をスマートに行う方法があれば教えていただきたいのですが、そんな方法がないのであれば、ないということを教えていただけるだけでも構いません。
ドキュメントを調べようとしたものの、concatメソッドしか見つけることができませんでした。。。
何卒、宜しくお願いします。
追記 回答を受けて試したこと
python
1import pandas as pd 2sample_df = pd.DataFrame({'hoge': [1, 2, 3]}) 3 4pd.assign(added1=[1, 2, 3], added2=[3, 4, 5]) 5sample_df 6=> hoge の列しか存在しない 7 8# こうすればsample_dfは書き換わるが、それはconcatでも可能 9# sample_df = pd.assign(added1=[1, 2, 3], added2=[3, 4, 5])
本当にやりたいこと
python
1import pandas as pd 2 3def add_column(dataframe): 4 # ここで複数の配列やseriesをdataframeに列追加する 5 # 現状の代替策 6 # sample_df['added1'] = [2, 3, 4] 7 # sample_df['added2'] = [3, 4, 5] 8 9sample_df = pd.DataFrame({'hoge': [1, 2, 3]}) 10add_column(samlple_df) 11 12sample_df 13=> hoge以外の複数の列(added1など)が追加されたsample_dfを取得
回答1件
あなたの回答
tips
プレビュー