Python Index Düzenleme

Merhabalar herkese.Ufak bir problemim var çözemedim.
100 elemanlı bir dataframe var.Bu elemanlardan bazılarını filtreleyip siliyorum.
Elimde 95 eleman kaldı diyelim.Sıkıntım bu elemanların index sıralaması örneğin;
1 2 3 7 şeklinde oluyor.
Bunu nasıl düzeltebilirim?

Merhaba,

Dataframe nedir?

Elemanlar bir array’de (list) tutulursa ilk elemanin indisi her zaman 0, ikinci elemaninki her zaman 1, 95. elemaninki de her zaman 94 olacaktir (ama eleman -> indis cevrimi yavaslayabilir).

Alternatif ise her degisimde dataframe’in ustunden gecip indisleri guncelleme.

https://youtu.be/5UhQjCeHvM4 cevap bumu yanlisim varsa duzeltin

Öncelikle cevap verdiğiniz için teşekkür ederim.Dediğiniz mantıkla geçici olarak new_index adında bir sütun oluşturdum istediğim şekilde sıralı olarak.Şimdilik bu sütunu baz alacağım.Ancak bunu dataframe’in index sütununa nasıl atayacağım bilmiyorum.

Merhaba sizinle şöyle bir kaç örnek paylaşayım:

  1. 5 sütunlu 20 satırlı bir DataFrame oluşturalım.
import numpy as np
import pandas as pd

df = pd.DataFrame(
    data=np.arange(100).reshape(20, 5), 
    columns=["A", "B", "C", "D", "E"]
)
print(df)

Aşağıdaki gibi bir çıktı almamız lazım:

     A   B   C   D   E
0    0   1   2   3   4
1    5   6   7   8   9
2   10  11  12  13  14
3   15  16  17  18  19
4   20  21  22  23  24
5   25  26  27  28  29
6   30  31  32  33  34
7   35  36  37  38  39
8   40  41  42  43  44
9   45  46  47  48  49
10  50  51  52  53  54
11  55  56  57  58  59
12  60  61  62  63  64
13  65  66  67  68  69
14  70  71  72  73  74
15  75  76  77  78  79
16  80  81  82  83  84
17  85  86  87  88  89
18  90  91  92  93  94
19  95  96  97  98  99
  1. Bu DataFrame'in son sütununu düşürelim:
df1 = df.drop(columns=["E"])
print(df1)

Şöyle bir çıktı almamız lazım.

     A   B   C   D
0    0   1   2   3
1    5   6   7   8
2   10  11  12  13
3   15  16  17  18
4   20  21  22  23
5   25  26  27  28
6   30  31  32  33
7   35  36  37  38
8   40  41  42  43
9   45  46  47  48
10  50  51  52  53
11  55  56  57  58
12  60  61  62  63
13  65  66  67  68
14  70  71  72  73
15  75  76  77  78
16  80  81  82  83
17  85  86  87  88
18  90  91  92  93
19  95  96  97  98
  1. Şimdi de 1. satırı düşürelim:
df2 = df.drop(index=[1])
print(df2)

Aşağıdaki gibi bir çıktı almamız lazım:

     A   B   C   D   E
0    0   1   2   3   4
2   10  11  12  13  14
3   15  16  17  18  19
4   20  21  22  23  24
5   25  26  27  28  29
6   30  31  32  33  34
7   35  36  37  38  39
8   40  41  42  43  44
9   45  46  47  48  49
10  50  51  52  53  54
11  55  56  57  58  59
12  60  61  62  63  64
13  65  66  67  68  69
14  70  71  72  73  74
15  75  76  77  78  79
16  80  81  82  83  84
17  85  86  87  88  89
18  90  91  92  93  94
19  95  96  97  98  99

Gördüğünüz gibi, 0. indisten sonra 2. indis geliyor. Bunu düzeltmemiz gerekiyor.

  1. Son yaptığımız örnekteki indis sırasını yeniden düzenleyelim:
df2 = df2.rename(index={j: i for i, j in enumerate(df2.index)})
print(df2)

Şimdi alacağımız çıktı ise şöyle olacaktır:

     A   B   C   D   E
0    0   1   2   3   4
1   10  11  12  13  14
2   15  16  17  18  19
3   20  21  22  23  24
4   25  26  27  28  29
5   30  31  32  33  34
6   35  36  37  38  39
7   40  41  42  43  44
8   45  46  47  48  49
9   50  51  52  53  54
10  55  56  57  58  59
11  60  61  62  63  64
12  65  66  67  68  69
13  70  71  72  73  74
14  75  76  77  78  79
15  80  81  82  83  84
16  85  86  87  88  89
17  90  91  92  93  94
18  95  96  97  98  99
1 Beğeni

Çok teşekkür ederim tam olarak buydu aradığım.
Bu arada kendimde bir yol buldum bunu paylaşmak isterim.
df.index=range(0,94,1)
Bu şekilde istediğim şeye ulaştım.

1 Beğeni

Doğru, öyle de yapabilirsiniz. :+1: