52236


DataFrameがあった際に、固定の列をindex？の0から追加をしたいです。  
言葉だとうまく説明できないため、疑似的なコードで記載いたします。

[code]

    import pandas as pd
    # 既存のDataFrame（実際にはそれなりの件数が存在）
    df = pd.DataFrame([[1, 'hoge', 'hogehoge'], [2, 'huga', 'hugahuga'], [3, 'piyo', 'piyopiyo']])
    
    #1, hoge, hogehoge
    #2, huga, hugahuga
    #3, piyo, piyopiyo
    
    df.xxxx(['add1', 'add2', 'add3']) # ここを知りたいです。
    
    # こういった形で固定値の列を複数列追加したい
    #add1, add2, add3, 1, hoge, hogehoge
    #add1, add2, add3, 2, huga, hugahuga
    #add1, add2, add3, 3, piyo, piyopiyo
    
[/code]

追加したいカラムは複数あるため、1つ１つ追加ではなく一括で追加できればと考えています。  
（難しいのであれば追加したい列をforで回して追加していくになりますでしょうか？）


CC BY-SA 4.0
2019-01-22T04:28:14.150
52191
2019-01-24T09:09:51.603
2019-01-22T05:25:15.483
13022
13022
question
python python3 pandas
pandas.DataFrameで固定値列を追加したい


とりあえず何通りかを記載しましたので、お好きな方法をどうぞ  
（カラム名は特に書き換えておりません）

[code]

    import pandas as pd
    
    df = pd.DataFrame(
        [[1, 'hoge', 'hogehoge'],
         [2, 'huga', 'hugahuga'],
         [3, 'piyo', 'piyopiyo']])
    
    # DataFrame.join() を使う
    res = pd.DataFrame([['add1','add2','add3']]*len(df)).join(df, lsuffix='a')
    #     0a    1a    2a  0     1         2
    #0  add1  add2  add3  1  hoge  hogehoge
    #1  add1  add2  add3  2  huga  hugahuga
    #2  add1  add2  add3  3  piyo  piyopiyo
    
    # これでも同じ
    res = pd.DataFrame({0:'add1',1:'add2',2:'add3'}, index=df.index).join(df, lsuffix='a')
    #     0a    1a    2a  0     1         2
    #0  add1  add2  add3  1  hoge  hogehoge
    #1  add1  add2  add3  2  huga  hugahuga
    #2  add1  add2  add3  3  piyo  piyopiyo
    
    
    # pandas.concat() を使う
    res = pd.concat([pd.DataFrame([['add1','add2','add3']]*len(df)),df], axis=1)
    #      0     1     2  0     1         2
    #0  add1  add2  add3  1  hoge  hogehoge
    #1  add1  add2  add3  2  huga  hugahuga
    #2  add1  add2  add3  3  piyo  piyopiyo
    
    
    # DataFrame.assign() を使い列を追加、その後列を並び替える
    res=df.assign(a='add1',b='add2',c='add3')
    res = res.loc[:,res.columns[3:].append(res.columns[:3])]
    #      a     b     c  0     1         2
    #0  add1  add2  add3  1  hoge  hogehoge
    #1  add1  add2  add3  2  huga  hugahuga
    #2  add1  add2  add3  3  piyo  piyopiyo
    
    # ループにて列を追加、その後列を並び替える（元のDataFrameを書き換え）
    df.columns += 3 #挿入分 列番号を空ける
    for i,val in enumerate(['add1', 'add2', 'add3']):
        df[i] = val
    res = df.sort_index(axis=1)
    #      0     1     2  3     4         5
    #0  add1  add2  add3  1  hoge  hogehoge
    #1  add1  add2  add3  2  huga  hugahuga
    #2  add1  add2  add3  3  piyo  piyopiyo
    
[/code]


CC BY-SA 4.0
2019-01-23T04:53:12.293
52236
2019-01-23T04:53:12.293
24801
52191
answer


追加する列名を指定して代入します。下記の例では列名を適当にしているため、適宜変更してください。

[code]

    df[3] = "add1"
    df[4] = "add2"
    df[5] = "add3"
    
[/code]


CC BY-SA 4.0
2019-01-24T09:09:51.603
52282
2019-01-24T09:09:51.603
7754
52191
answer