パンダのデータフレームの特定のインデックスに新しい行を挿入する

ライザ

「identifier」、「values」、「subid」の2つの列を持つ次のデータフレームdfがあります。

     identifier   values    subid
0      1          101       1
1      1          102       1
2      1          103       2 #index in list x        
3      1          104       2
4      1          105       2
5      2          106       3   
6      2          107       3
7      2          108       3
8      2          109       4 #index in list x
9      2          110       4
10     3          111       5
11     3          112       5 
12     3          113       6 #index in list x

私はインデックスのリストを持っています、

x = [2, 8, 12] 

リストxに記載されているインデックスの直前に行を挿入したい。同様に、インデックス2の直前に挿入される行の場合、次の値になります。インデックス2の行と同じ識別子、つまり1になります。インデックス2の行と同じ値、つまり103; ただし、新しい行のsubidは((インデックス2のsubid)-1)、または単に前の行のsubid、つまり1になります。

以下は私が期待する最終的な結果のdfです:

   identifier   values    subid
0      1          101       1
1      1          102       1
2      1          103       1 #new row inserted     
3      1          103       2 #index in list x        
4      1          104       2
5      1          105       2
6      2          106       3   
7      2          107       3
8      2          108       3
9      2          109       3 #new row inserted
10     2          109       4 #index in list x
11     2          110       4
12     3          111       5
13     3          112       5 
14     3          113       5 #new row inserted
15     3          113       6 #index in list x

私が試しているコード:

 m = df.index       #storing the indices of the df
 #m

 for i in m:
     if i in x:     #x is the given list of indices
         df.iloc[i-1]["identifier"] = df.iloc[i]["identifier"]
         df.iloc[i-1]["values"] = df.iloc[i]["values"]
         df.iloc[i-1]["subid"] = (df.iloc[i]["subid"]-1)
 df

上記のコードは、(i-1)インデックスの行を置き換えるだけであり、上記の値で追加の行を挿入するものでありません助けてください。

不明な点がありましたらお知らせください。

bdiamante

インデックスの順序を維持するのは難しい部分です。これがこれを行うための最も効率的な方法かどうかはわかりませんが、機能するはずです。

x = [2,8,12]
rows = []
cur = {}

for i in df.index:
    if i in x:
        cur['index'] = i
        cur['identifier'] = df.iloc[i].identifier
        cur['values'] = df.iloc[i]['values']
        cur['subid'] = df.iloc[i].subid - 1
        rows.append(cur)
        cur = {}

次に、新しい行リストを繰り返し処理し、増分連結を実行して、新しい各行を正しい場所に挿入します。

offset = 0; #tracks the number of rows already inserted to ensure rows are inserted in the correct position

for d in rows:
    df = pd.concat([df.head(d['index'] + offset), pd.DataFrame([d]), df.tail(len(df) - (d['index']+offset))])
    offset+=1


df.reset_index(inplace=True)
df.drop('index', axis=1, inplace=True)
df

    level_0 identifier  subid   values
0         0          1      1      101
1         1          1      1      102
2         0          1      1      103
3         2          1      2      103
4         3          1      2      104
5         4          1      2      105
6         5          2      3      106
7         6          2      3      107
8         7          2      3      108
9         0          2      3      109
10        8          2      4      109
11        9          2      4      110
12       10          3      5      111
13       11          3      5      112
14        0          3      5      113
15       12          3      6      113

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

目的のインデックスでパンダデータフレームに新しい行を挿入する方法

分類Dev

Python:あるデータフレームから別のデータフレームに特定のインデックスで行を挿入する

分類Dev

パンダ:インデックスを保持せずにデータフレームを他のデータフレームに挿入します

分類Dev

行インデックスのあるパターンの後に新しい文字列を挿入し、新しいファイルに書き込みます

分類Dev

日時インデックスのある行をデータフレームに挿入します

分類Dev

MultiIndexデータフレームパンダの特定のレベルに新しいインデックスを追加します

分類Dev

特定の日付範囲の間に他の列を挿入して、データフレームに新しい列を作成する-パンダ

分類Dev

特定のインデックス名(文字列)を新しいデータフレームにコピーする

分類Dev

新しい日付を作成し、パンダのデータフレームにインデックスとして挿入するにはどうすればよいですか?

分類Dev

日時インデックスを使用して日付に基づいてパンダデータフレームに行を挿入する

分類Dev

日時インデックスを使用して時間に基づいてパンダデータフレームに行を挿入する

分類Dev

他の列の望ましい部分にインデックスを付けて、パンダデータフレームに新しい列を作成する方法

分類Dev

インデックスiのデータフレームに行を挿入します

分類Dev

「欠落している」マルチインデックス行をパンダデータフレームに挿入する

分類Dev

行の値に基づいてパンダのデータフレームに行を挿入しますか?

分類Dev

列と行のインデックスを変数として使用して、パンダのデータフレームにデータを入力します

分類Dev

合計行をデータフレームに追加した後、パンダのデータフレームインデックスの名前を削除する

分類Dev

ソートされていないインデックスを持つ複数のパンダデータフレームから別のデータフレームの既存の列に値を挿入します

分類Dev

右側のインデックスのデータフレームの新しい列に値を挿入します

分類Dev

高度なパンダ:特定の行インデックスからマルチインデックスパンダデータフレームを作成します

分類Dev

パンダ:インデックス列のコピーであるデータフレームに新しい列を追加する

分類Dev

あるデータフレームを別のデータフレームに挿入した後にインデックスをリセットする方法

分類Dev

インデックスのリストを指定してデータフレームに複数の行を挿入する最速の方法(Python)

分類Dev

パンダ:特定のインデックスで始まる一連のデータフレーム列に入力します

分類Dev

空白行のパンダデータフレームを挿入する

分類Dev

インデックス付きのパンダデータフレームの最初の行を取得します

分類Dev

インデックス付きのパンダデータフレームの最初の行を取得します

分類Dev

不足している日付をパンダデータフレームのフラットファイルに挿入します

分類Dev

jqueryは、特定のインデックスでテーブルに新しい行を挿入します

Related 関連記事

  1. 1

    目的のインデックスでパンダデータフレームに新しい行を挿入する方法

  2. 2

    Python:あるデータフレームから別のデータフレームに特定のインデックスで行を挿入する

  3. 3

    パンダ:インデックスを保持せずにデータフレームを他のデータフレームに挿入します

  4. 4

    行インデックスのあるパターンの後に新しい文字列を挿入し、新しいファイルに書き込みます

  5. 5

    日時インデックスのある行をデータフレームに挿入します

  6. 6

    MultiIndexデータフレームパンダの特定のレベルに新しいインデックスを追加します

  7. 7

    特定の日付範囲の間に他の列を挿入して、データフレームに新しい列を作成する-パンダ

  8. 8

    特定のインデックス名(文字列)を新しいデータフレームにコピーする

  9. 9

    新しい日付を作成し、パンダのデータフレームにインデックスとして挿入するにはどうすればよいですか?

  10. 10

    日時インデックスを使用して日付に基づいてパンダデータフレームに行を挿入する

  11. 11

    日時インデックスを使用して時間に基づいてパンダデータフレームに行を挿入する

  12. 12

    他の列の望ましい部分にインデックスを付けて、パンダデータフレームに新しい列を作成する方法

  13. 13

    インデックスiのデータフレームに行を挿入します

  14. 14

    「欠落している」マルチインデックス行をパンダデータフレームに挿入する

  15. 15

    行の値に基づいてパンダのデータフレームに行を挿入しますか?

  16. 16

    列と行のインデックスを変数として使用して、パンダのデータフレームにデータを入力します

  17. 17

    合計行をデータフレームに追加した後、パンダのデータフレームインデックスの名前を削除する

  18. 18

    ソートされていないインデックスを持つ複数のパンダデータフレームから別のデータフレームの既存の列に値を挿入します

  19. 19

    右側のインデックスのデータフレームの新しい列に値を挿入します

  20. 20

    高度なパンダ:特定の行インデックスからマルチインデックスパンダデータフレームを作成します

  21. 21

    パンダ:インデックス列のコピーであるデータフレームに新しい列を追加する

  22. 22

    あるデータフレームを別のデータフレームに挿入した後にインデックスをリセットする方法

  23. 23

    インデックスのリストを指定してデータフレームに複数の行を挿入する最速の方法(Python)

  24. 24

    パンダ:特定のインデックスで始まる一連のデータフレーム列に入力します

  25. 25

    空白行のパンダデータフレームを挿入する

  26. 26

    インデックス付きのパンダデータフレームの最初の行を取得します

  27. 27

    インデックス付きのパンダデータフレームの最初の行を取得します

  28. 28

    不足している日付をパンダデータフレームのフラットファイルに挿入します

  29. 29

    jqueryは、特定のインデックスでテーブルに新しい行を挿入します

ホットタグ

アーカイブ