pandas データフレームに行を挿入する

概要

以下のパンダデータフレームがあります

import pandas as pd
dat = pd.DataFrame({'A': [1,2,3,5], 'B': [7,6,7,8]})

今、リストができました

List = [99, 88]

このリストを行番号 2 に挿入したいと思います。

これを達成するために利用できる方法はありますか?挿入というメソッドがあることがわかりましたが、これは指定された場所に列を挿入するだけです。

解決策

iloc と concat を使用できます。

N = 2

List = [99, 88]

out = pd.concat([dat.iloc[:N],
                 pd.DataFrame([List], columns=dat.columns),
                 dat.iloc[N:]], ignore_index=True)

あるいは、(ソートされた) 範囲インデックスがある場合は、目的の位置 (例: 1.5) の直前にインデックスを挿入し、sort_index を使用することもできます。

N = 2
dat.loc[N-0.5] = List
dat.sort_index(inplace=True, ignore_index=True)

出力:

    A   B
0   1   7
1   2   6
2  99  88
3   3   7
4   5   8

既存のデータを置き換える場合は、次のように割り当てます。

dat.loc[2] = List

出力:

    A   B
0   1   7
1   2   6
2  99  88
3   5   8

これをパイプ内で実行するには、おそらくカスタム関数を使用する必要があります。

def assign_chain(df, pos, obj):
    df = df.copy()
    df.loc[pos] = obj
    return df

out = (pd.DataFrame({'A' : [1,2,3,5], 'B' : [7,6,7,8]})
         .pipe(assign_chain, 2, List)
      )