"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إدراج قائمة بنجاح في خلية DataFrame في بايثون؟

كيفية إدراج قائمة بنجاح في خلية DataFrame في بايثون؟

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

How to Successfully Insert a List into a DataFrame Cell in Python?

إدراج قائمة في خلية في DataFrame

عند التعامل مع البيانات المتفرقة في Python pandas، قد يكون من الصعب إدراج قوائم في خلايا معينة. محاولة مثل هذه العمليات باستخدام طرق شائعة مثل df.ix[1,'B'] = abc غالبًا ما تؤدي إلى أخطاء بسبب أطوال المفاتيح غير المتطابقة.

الحلول والقيود البديلة

محاولات للتغلب على حدث خطأ من خلال تضمين القائمة بين قوسين مربعين إضافيين (على سبيل المثال، df.ix[1,'B'] = [abc]) أو باستخدام تمثيلات السلسلة (على سبيل المثال، df.ix[1,'B'] = ', '.join (abc)) غير مرضية، لأنها تقدم عناصر إضافية أو تغير بنية البيانات المقصودة.

استخدام df.at لإدراج القائمة

هناك نهج أكثر فعالية هو استخدام df.at بدلاً من df.ix أو df.loc. يستهدف df.at على وجه التحديد خلية واحدة، مما يزيل الغموض الذي يمكن أن يؤدي إلى الأخطاء المذكورة أعلاه.

import pandas as pd

# Create a dataframe with mixed data types
df = pd.DataFrame(data={'A': [1, 2, 3], 'B': ['x', 'y', 'z']})

# Insert a list into cell 1B
df.at[1, 'B'] = ['m', 'n']

print(df)

نجحت هذه العملية في إدراج ['m', 'n'] في الخلية 1B دون أي أخطاء.

التأكد من توافق العمود Dtype

من المهم ملاحظة ذلك أن العمود الذي تنوي إدراج القائمة فيه يجب أن يتم تعيين dtype الخاص به على "object". إذا كان العمود يحتوي على نوع dtype مختلف، مثل 'int64'، فسيحدث خطأ. لمعالجة هذه المشكلة، يمكنك تحويل dtype الخاص بالعمود قبل محاولة الإدراج:

df = pd.DataFrame(data={'A': [1, 2, 3], 'B': [1,2,3]})
df['B'] = df['B'].astype('object')

# Now, list insertion will work as expected
df.at[1, 'B'] = [1, 2, 3]
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3