البرمجة

كيفية حفظ أول صف في Spark DataFrame كيفية حفظ أول صف في Spark DataFrame

In Spark DataFrames, the dropDuplicates method does not provide a direct equivalent to the keep parameter in Pandas. However, you can achieve similar functionality by using window functions to assign row numbers based on your desired order, and then filtering based on those row numbers.

To keep the first row for each set of duplicates based on ‘scheduled_datetime’ and ‘flt_flightnumber’, you can use the following approach:

python
from pyspark.sql import SparkSession from pyspark.sql.functions import row_number from pyspark.sql.window import Window # Assuming 'scheduled_datetime' and 'flt_flightnumber' are columns 6 and 17 respectively window_spec = Window.partitionBy("scheduled_datetime", "flt_flightnumber").orderBy("actual_datetime") df = spark.createDataFrame([...]) # Create or load your DataFrame here # Add a row number column df = df.withColumn("row_num", row_number().over(window_spec)) # Keep only the rows where row_num is 1 result_df = df.filter("row_num = 1").drop("row_num")

This will keep the first row for each unique combination of ‘scheduled_datetime’ and ‘flt_flightnumber’. To keep the last row, you can modify the orderBy clause to orderBy(desc("actual_datetime")) in the Window function.

المزيد من المعلومات

في Apache Spark، يمكنك استخدام دالة row_number() مع النوافذ (Windows) لتعيين أرقام للصفوف بناءً على ترتيب معين، ثم استخدام هذه الأرقام للحفاظ على الصف الأول أو الأخير من بين الصفوف المكررة. النوافذ تسمح لك بتطبيق تحويلات على مجموعة من الصفوف (على سبيل المثال، الصفوف التي تحمل نفس القيم في العمود المحدد) وفقا لترتيب محدد.

الطريقة الموصى بها للحفاظ على الصف الأول لكل مجموعة من الصفوف المكررة هي:

  1. استخدام الدالة row_number() مع النافذة لترقيم الصفوف بناءً على العمود المحدد.
  2. تصفية الصفوف بحيث يتم الاحتفاظ بالصفوف التي يكون رقمها 1 فقط.

اليك الكود الذي يوضح هذه الطريقة:

python
from pyspark.sql import SparkSession from pyspark.sql.functions import row_number from pyspark.sql.window import Window # افترض أن 'scheduled_datetime' و 'flt_flightnumber' هما العمود 6 و 17 على التوالي window_spec = Window.partitionBy("scheduled_datetime", "flt_flightnumber").orderBy("actual_datetime") df = spark.createDataFrame([...]) # إنشاء الـ DataFrame هنا # إضافة عمود لترقيم الصفوف df = df.withColumn("row_num", row_number().over(window_spec)) # الاحتفاظ فقط بالصفوف التي يكون فيها رقم الصف 1 result_df = df.filter("row_num = 1").drop("row_num")

بهذه الطريقة، سيتم الاحتفاظ بالصف الأول من كل مجموعة من الصفوف المتكررة بناءً على القيم في العمودين ‘scheduled_datetime’ و ‘flt_flightnumber’.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر