pandas python شرح




اختيار الأعمدة في dataframe الباندا (6)

أدرك أن هذا السؤال قديم جدا ، ولكن في أحدث نسخة من الباندا هناك طريقة سهلة لفعل هذا بالضبط. يمكن تقسيم أسماء الأعمدة (وهي سلاسل) بأي طريقة تريدها.

columns = ['b', 'c']
df1 = pd.DataFrame(df, columns=columns)

لدي بيانات في أعمدة مختلفة ولكن لا أعرف كيفية استخراجها لحفظها في متغير آخر.

index  a   b   c
1      2   3   4
2      3   4   5

كيف أختار 'b' و 'c' واحفظه في df1؟

حاولت

df1 = df['a':'b']
df1 = df.ix[:, 'a':'b']

يبدو أن لا شيء يعمل.


إذا كنت تريد الحصول على عنصر واحد حسب فهرس الصف واسم العمود ، فيمكنك القيام بذلك تمامًا مثل df['b'][0] . إنها بسيطة بقدر ما تستطيع.

أو يمكنك استخدام df.ix[0,'b'] ، والاستخدام المختلط للفهرس والتسمية.


بافتراض أن أسماء الأعمدة ( df.columns ) هي ['index','a','b','c'] ، فإن البيانات التي تريدها موجودة في الأعمدة الثالثة والرابعة. إذا كنت لا تعرف أسمائهم عند تشغيل النص البرمجي ، فيمكنك القيام بذلك

newdf = df[df.columns[2:4]] # Remember, Python is 0-offset! The "3rd" entry is at slot 2.

وكما يشير EMS في إجابته ، فإن df.ix الأعمدة بشكل أكثر .columns ، لكن واجهة تقطيع .columns قد تكون أكثر طبيعية لأنها تستخدم بنية الفهرسة / تشريح الشرائح df.ix 1-D.

WARN: 'index' هو اسم سيء لعمود DataFrame . يتم استخدام نفس التسمية أيضًا لسمة df.index الحقيقية ، صفيف Index . لذلك يتم إرجاع العمود الخاص بك بواسطة df['index'] ويتم إرجاع فهرس DataFrame الحقيقي بواسطة df.index . Index هو نوع خاص من Series المحسّنة للبحث عن قيم عناصره. بالنسبة إلى df.index ، يمكنك البحث عن الصفوف حسب تصنيفها. هذه السمة df.columns هي أيضًا مجموعة pd.Index ، للبحث عن الأعمدة حسب pd.Index .


لا يمكن تقسيم أسماء الأعمدة (التي هي سلاسل) بالطريقة التي جربتها.

هنا لديك بضعة خيارات. إذا كنت تعرف من سياق المتغيرات التي ترغب في قطعها ، يمكنك فقط عرض طريقة عرض للأعمدة فقط عن طريق تمرير قائمة في بناء جملة __getitem__ ([]).

df1 = df[['a','b']]

بدلاً من ذلك ، إذا كان من المهم فهرستها عدديًا وليس باسمها (يجب أن تفيد شفرتك تلقائيًا دون معرفة أسماء أول عمودين) ، فيمكنك إجراء ذلك بدلاً من ذلك:

df1 = df.iloc[:,0:2] # Remember that Python does not slice inclusive of the ending index.

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

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

df1 = df.iloc[0,0:2].copy() # To avoid the case where changing df1 also changes df

مجرد استخدام: فإنه سيتم تحديد ب وج العمود.

df1=pd.DataFrame()
df1=df[['b','c']]

ثم يمكنك فقط الاتصال بـ df1:

df1

يمكنك تقديم قائمة بالأعمدة التي سيتم إسقاطها والعودة مرة أخرى إلى DataFrame مع الأعمدة المطلوبة فقط باستخدام الدالة drop() في Pandas DataFrame.

فقط أقول

colsToDrop = ['a']
df.drop(colsToDrop, axis=1)

سيعود إلى DataFrame مع الأعمدة b و c .

يتم توثيق أسلوب drop here .





dataframe