عند التعامل مع البيانات المتفرقة في Python pandas، قد يكون من الصعب إدراج قوائم في خلايا معينة. محاولة مثل هذه العمليات باستخدام طرق شائعة مثل df.ix[1,'B'] = abc غالبًا ما تؤدي إلى أخطاء بسبب أطوال المفاتيح غير المتطابقة.
محاولات للتغلب على حدث خطأ من خلال تضمين القائمة بين قوسين مربعين إضافيين (على سبيل المثال، df.ix[1,'B'] = [abc]) أو باستخدام تمثيلات السلسلة (على سبيل المثال، df.ix[1,'B'] = ', '.join (abc)) غير مرضية، لأنها تقدم عناصر إضافية أو تغير بنية البيانات المقصودة.
هناك نهج أكثر فعالية هو استخدام 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 الخاص به على "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