English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
إعادة الترتيب سيغير علامات الصف وعمود 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