"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية حساب عمود بناءً على قيم الصف السابق في الباندا باستخدام الدالة `apply()`؟

كيفية حساب عمود بناءً على قيم الصف السابق في الباندا باستخدام الدالة `apply()`؟

تم النشر بتاريخ 2024-11-01
تصفح:654

How to Calculate a Column Based on Previous Row Values in Pandas Using the `apply()` Function?

تطبيق العمليات الحسابية مع قيم الصف السابق في Pandas

في Pandas، مواجهة التحدي المتمثل في دمج قيم الصف السابق في الحسابات أثناء معالجة البيانات ليست كذلك غير شائع. يتضمن أحد هذه السيناريوهات الحاجة إلى استخدام قيمة الصف السابق عند حساب عمود جديد باستخدام الدالة application().

فكر في سيناريو حيث لدينا DataFrame بالبنية التالية:

Index_Date    A   B     C    D
================================
2015-01-31    10   10   Nan   10
2015-02-01     2    3   Nan   22
2015-02-02    10   60   Nan  280
2015-02-03    10  100   Nan  250

هدفنا هو ملء العمود "C" بالقيم المحسوبة. بالنسبة للصف الأول، يتم اشتقاق "C" من "D". بالنسبة للصفوف اللاحقة، يتم حساب "C" عن طريق ضرب قيمة "C" للصف السابق بقيمة "A" للصف الحالي وإضافة القيمة "B".

النهج

لتحقيق ذلك، نستخدم مزيجًا من التهيئة والتكرار داخل وظيفة application().

  1. تهيئة القيمة 'C' للصف الأول باستخدام القيمة من 'D'.
df.loc[0, 'C'] = df.loc[0, 'D']
    كرر خلال الصفوف المتبقية واحسب قيم "C":
for i in range(1, len(df)):
    df.loc[i, 'C'] = df.loc[i - 1, 'C'] * df.loc[i, 'A']   df.loc[i, 'B']

النتيجة

سيعمل هذا الأسلوب على ملء العمود "C" بالقيم المحسوبة المطلوبة بشكل فعال:

Index_Date A B C D ========================================================================== 2015-01-31 10 10 10 10 2015-02-01 2 3 23 22 2015-02-02 10 60 290 280 2015-02-03 101003000250
            
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3