Python Pandas - Yeniden Dizin Oluşturma
ReindexingDataFrame'in satır etiketlerini ve sütun etiketlerini değiştirir. Yeniden indekslemek , verileri belirli bir eksen boyunca belirli bir etiket kümesine uyacak şekilde uydurmak anlamına gelir.
İndeksleme yoluyla birden fazla işlem gerçekleştirilebilir -
- Mevcut verileri yeni bir etiket kümesiyle eşleşecek şekilde yeniden sıralayın. 
- Etiket için hiçbir verinin bulunmadığı etiket konumlarına eksik değer (NA) işaretçileri ekleyin. 
Misal
import pandas as pd
import numpy as np
N=20
df = pd.DataFrame({
   'A': pd.date_range(start='2016-01-01',periods=N,freq='D'),
   'x': np.linspace(0,stop=N-1,num=N),
   'y': np.random.rand(N),
   'C': np.random.choice(['Low','Medium','High'],N).tolist(),
   'D': np.random.normal(100, 10, size=(N)).tolist()
})
#reindex the DataFrame
df_reindexed = df.reindex(index=[0,2,5], columns=['A', 'C', 'B'])
print df_reindexedOnun output aşağıdaki gibidir -
A    C     B
0  2016-01-01  Low   NaN
2  2016-01-03  High  NaN
5  2016-01-06  Low   NaNDiğer Nesnelerle Hizalamak için Yeniden Dizin Oluştur
Bir nesneyi alıp eksenlerini başka bir nesneyle aynı şekilde etiketlemek için yeniden indekslemek isteyebilirsiniz. Aynısını anlamak için aşağıdaki örneği düşünün.
Misal
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(10,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(7,3),columns=['col1','col2','col3'])
df1 = df1.reindex_like(df2)
print df1Onun output aşağıdaki gibidir -
col1         col2         col3
0    -2.467652    -1.211687    -0.391761
1    -0.287396     0.522350     0.562512
2    -0.255409    -0.483250     1.866258
3    -1.150467    -0.646493    -0.222462
4     0.152768    -2.056643     1.877233
5    -1.155997     1.528719    -1.343719
6    -1.015606    -1.245936    -0.295275Note - İşte df1 DataFrame değiştirildi ve aşağıdaki gibi yeniden dizine alındı: df2. Sütun adları eşleşmelidir, aksi takdirde tüm sütun etiketi için NAN eklenecektir.
Yeniden İndeksleme Sırasında Doldurma
reindex() aşağıdaki gibi değerlerle doldurma yöntemi olan isteğe bağlı bir parametre yöntemini alır -
- pad/ffill - Değerleri ileriye doğru doldurun 
- bfill/backfill - Değerleri geriye doğru doldur 
- nearest - En yakın indeks değerlerinden doldurun 
Misal
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
# Padding NAN's
print df2.reindex_like(df1)
# Now Fill the NAN's with preceding Values
print ("Data Frame with Forward Fill:")
print df2.reindex_like(df1,method='ffill')Onun output aşağıdaki gibidir -
col1        col2       col3
0    1.311620   -0.707176   0.599863
1   -0.423455   -0.700265   1.133371
2         NaN         NaN        NaN
3         NaN         NaN        NaN
4         NaN         NaN        NaN
5         NaN         NaN        NaN
Data Frame with Forward Fill:
         col1        col2        col3
0    1.311620   -0.707176    0.599863
1   -0.423455   -0.700265    1.133371
2   -0.423455   -0.700265    1.133371
3   -0.423455   -0.700265    1.133371
4   -0.423455   -0.700265    1.133371
5   -0.423455   -0.700265    1.133371Note - Son dört sıra doldurulur.
Yeniden Dizine Ekleme Sırasında Doldurma Sınırları
Limit argümanı, yeniden dizin oluştururken doldurma üzerinde ek kontrol sağlar. Sınır, ardışık eşleşmelerin maksimum sayısını belirtir. Aynısını anlamak için aşağıdaki örneği ele alalım -
Misal
import pandas as pd
import numpy as np
 
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
# Padding NAN's
print df2.reindex_like(df1)
# Now Fill the NAN's with preceding Values
print ("Data Frame with Forward Fill limiting to 1:")
print df2.reindex_like(df1,method='ffill',limit=1)Onun output aşağıdaki gibidir -
col1        col2        col3
0    0.247784    2.128727    0.702576
1   -0.055713   -0.021732   -0.174577
2         NaN         NaN         NaN
3         NaN         NaN         NaN
4         NaN         NaN         NaN
5         NaN         NaN         NaN
Data Frame with Forward Fill limiting to 1:
         col1        col2        col3
0    0.247784    2.128727    0.702576
1   -0.055713   -0.021732   -0.174577
2   -0.055713   -0.021732   -0.174577
3         NaN         NaN         NaN
4         NaN         NaN         NaN
5         NaN         NaN         NaNNote- Yalnızca 7. sıranın önceki 6. sıra tarafından doldurulduğunu gözlemleyin. Ardından satırlar olduğu gibi bırakılır.
Yeniden adlandırılıyor
Rename () yöntemi, bazı eşlemelere (bir dikt veya Seri) veya rastgele bir işleve dayalı olarak bir ekseni yeniden etiketlemenizi sağlar.
Bunu anlamak için şu örneği ele alalım -
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
print df1
print ("After renaming the rows and columns:")
print df1.rename(columns={'col1' : 'c1', 'col2' : 'c2'},
index = {0 : 'apple', 1 : 'banana', 2 : 'durian'})Onun output aşağıdaki gibidir -
col1        col2        col3
0    0.486791    0.105759    1.540122
1   -0.990237    1.007885   -0.217896
2   -0.483855   -1.645027   -1.194113
3   -0.122316    0.566277   -0.366028
4   -0.231524   -0.721172   -0.112007
5    0.438810    0.000225    0.435479
After renaming the rows and columns:
                c1          c2        col3
apple     0.486791    0.105759    1.540122
banana   -0.990237    1.007885   -0.217896
durian   -0.483855   -1.645027   -1.194113
3        -0.122316    0.566277   -0.366028
4        -0.231524   -0.721172   -0.112007
5         0.438810    0.000225    0.435479Rename () yöntemi bir inplacevarsayılan olarak False olan ve temel alınan verileri kopyalayan adlandırılmış parametre. Geçmekinplace=True Verileri yerinde yeniden adlandırmak için.