English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

إعادة بناء المؤشر في Pandas

إعادة الترتيب سيغير علامات الصف وعمود DataFrame. إعادة الترتيب تعني جعل البيانات تتطابق مع مجموعة معينة من العلامات على محور معين.

يمكن تنفيذ عدة عمليات من خلال الت索引، مثل-

إعادة ترتيب البيانات القائمة لتناسب مجموعة جديدة من العلامات.إدراج علامات النقص (NA) في مواقع العلامات التي لا تحتوي على بيانات.

مثال:

 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(['منخفضة','متوسطة','عالية'],N).tolist(),
    'D': np.random.normal(100, 10, size=(N)).tolist()
 )
 # إعادة بناء DataFrame
 df_reindexed = df.reindex(index=[0,2,5], columns=['A', 'C', 'B'])
 print(df_reindexed)

运行结果:

           A    C     B
0  2016-01-01  منخفضة   لا يوجد قيمة
2  2016-01-03  عالية   لا يوجد قيمة
5  2016-01-06  منخفضة   لا يوجد قيمة

إعادة الترتيب لتناسب الأجسام الأخرى

قد ترغب في الحصول على عنصر وضبط أسماء المحاور له لتناسب عنصر آخر. انظر إلى الأمثلة التالية لفهم نفس المفهوم.

مثال

 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(df1)

运行结果:

         col1         col2         col3
-2.467652    -1.211687    -0.391761
-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.295275

في هذا السياق، يتم تعديل DataFrame df1 وإعادة تقييمه مثل df2. يجب أن تطابق أسماء الأعمدة، وإلا سيتم إضافة NAN إلى جميع العلامات التشغيل للعمود.

ملء عند إعادة الت索引

reindex() يستخدم بيانات متاحة خيار طريقة، وهي طريقة ملء كالتالي

pad/ffill − ملء بالقيمة الأمامية

bfill/backfill − ملء بالقيمة الخلفية

nearest − ملء من أقرب قيمة مكررة

实例

 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'])
 # 填充 NAN
 print df2.reindex_like(df1)
 # الآن باستخدام القيمة السابقة ملء NAN
 print("بيانات الإطارات المملوءة بالتمديد الأمامي:")
 print(df2.reindex_like(df1,method='ffill'))

运行结果:

         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
بيانات الإطارات المملوءة بالتمديد الأمامي:
         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.133371

最后四行被填充。

重新编制索引时的填充限制

limit参数为重新索引时的填充提供了额外的控制。限制指定连续匹配的最大数量。让我们考虑以下示例以了解相同的内容-

实例

 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'])
 # 填充 NAN
 print df2.reindex_like(df1)
 # 现在用前面的值填充NAN print("前向填充限制为1的数据帧:")
 print(df2.reindex_like(df1,method='ffill',limit=1))

运行结果:

         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
前向填充限制为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         NaN

请注意,前面的第六行仅填充了第七行。然后,各行保持原样。

重命名

通过rename()方法,您可以基于某些映射(字典或系列)或任意函数来重新标记轴。  
让我们考虑以下示例以了解这一点-

  import pandas as pd
 import numpy as np
 df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
 print df1
 print ("重命名行和列之后:")
 print(df1.rename(columns={'col1' : 'c1', 'col2' : 'c2'},
 index = {0 : 'apple', 1 : 'banana', 2 : 'durian'}))

运行结果:

         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
بعد إعادة تسمية الصفوف والأعمدة:
                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.435479