いくつかの(インデックス)パラメータによってパンダデータフレームの「適切な」場所に値を挿入するための最良の方法は何ですか?

Kristada673

私は次のdfようなデータフレームを持っています

Word    Row ID  Remark
abc     1       xyz
def     2       xyz
ghi     4       uvw
jkl     5       qrs
mno     7       wxy

欠落している値は別のデータフレームにありdf1ます:

Word    Row ID  Remark
pqr     3       uuu
stu     6       vvv

不足している値をのdf1適切な場所に挿入したいdf1ので、これが望ましい出力です。

Word    Row ID  Remark
abc     1       xyz
def     2       xyz
pqr     3       uuu
ghi     4       uvw
jkl     5       qrs
stu     6       vvv
mno     7       wxy

これを行うための私のコードは次のとおりです。

for i in range(len(df1)):        # run through each of the missing values
    if df2['Row ID'][i] not in range(min(df['Row ID']), df2['Row ID'][i]):
        df.loc[-1] = df2.loc[i]  # adding a row with -1 index
        df.index += 1            # shifting index so that it does not overwrite the current value in that position

df = df.sort_values('Row ID')

しかし、これは、次のように、それを行うための最も効率的な方法ではないと思います。

  1. forループがあります。それを行うにはベクトル化された方法があるに違いないと思います。
  2. forループの最後にソート操作があります。ベクトル化された方法があれば、それはそのステップ自体にソートを組み込み、別のステップでは実行しないと思います。
BEN_YO

を使用することでsearchsorted、個人的にconcat+sort_valuesが問題を解決できると考えます

df1.index=np.searchsorted(df.RowID.values,df1.RowID.values)
pd.concat([df1,df]).sort_index()
Out[187]: 
  Word  RowID Remark
0  abc      1    xyz
1  def      2    xyz
2  pqr      3    uuu
2  ghi      4    uvw
3  jkl      5    qrs
4  stu      6    vvv
4  mno      7    wxy

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ