以下のパンダデータフレームがあります
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)
)