اذهب إلى المحتوى

السؤال

نشر

لدي بيانات على الشكل التالي:

df=
       col1       col2
 0  384444683      593  
 1  384444684      594 
 2  384444686      596  

وأريد تحويلها الى الشكل التالي بحيث أقوم بتحويل ال index الى عمود باسم index:

df=
   index    col1        col2
 0  0     384444683      593  
 1  1     384444684      594 
 2  2     384444686      596 

كيف يمكنني فعل هذا؟

Recommended Posts

  • 0
نشر

يمكنك استخدام الدالة index لخلق عمود خاص بالفهرس index كالتالي:

df['index1'] = df.index

أو استخدام الدالة .reset_index كذلك:

df.reset_index(level=0, inplace=True)

أو استخدامها بالطريقة التالية وفي كل الطرق تكون النتيجة كالتالي:

df = df.rename_axis('index').reset_index()

print(df)

     index    col1       col2  
0       0  384444683      593
1       1  384444684      594
2       2  384444686      596

 

  • 0
نشر (معدل)

كما أشار أحمد. وفي حالة كان لدينا مستويين للفهرس أي حالة MultiIndex:

import pandas as pd
import numpy as np
index = pd.MultiIndex.from_product([['TX', 'FL', 'CA'], 
                                    ['North', 'South']], 
                                   names=['State', 'Direction'])
df = pd.DataFrame(index=index, 
                  data=np.random.randint(0, 10, (6,4)), 
                  columns=list('abcd'))
"""
                 a 	b 	c 	d
State 	Direction 				
TX 	    North 	5 	7 	1 	0
        South 	1 	5 	7 	4
FL 	    North 	2 	8 	1 	7
        South   5 	9 	4 	0
CA 	    North 	0 	8 	9 	0
        South   5 	7 	9 	4
"""
df.reset_index()
"""
    State 	Direction 	a 	b 	c 	d
0 	TX 	North 	      6 	6 	2 	5
1 	TX 	South       	9 	1 	0 	4
2 	FL 	North       	2 	6 	1 	4
3 	FL 	South       	6 	7 	6 	3
4 	CA 	North       	3 	3 	5 	8
5 	CA 	South 	      7 	3 	8 	1
"""
"""
#level استخدم المعامل
للتحكم في مستويات الفهرس التي يتم تحويلها إلى أعمدة. إذا لم تكن هناك أسماء مستويات ، يمكنك الرجوع إلى كل مستوى من خلال موقعه الصحيح ، والذي يبدأ عند 0 من الخارج. يمكنك استخدام قيمة عددية هنا أو قائمة بجميع الفهارس التي ترغب في إعادة تعيينها. 
"""
df.reset_index(level='State') # نفسها  df.reset_index(level=0)
"""
        State 	a 	b 	c 	d
Direction 					
North 	TX 	1 	4 	2 	0
South 	TX 	1 	2 	8 	2
North 	FL 	8 	1 	9 	1
South 	FL 	1 	9 	6 	1
North 	CA 	9 	5 	5 	2
South 	CA 	3 	4 	6 	0
"""
"""
في بعض الحالات  عندما تريد الاحتفاظ بالفهرس وتحويله إلى عمود ، يمكنك القيام بما يلي
"""
# من أجل مستوى واحد
df.assign(State=df.index.get_level_values('State'))
"""
          	a 	b 	c 	d 	State
State Direction 					
TX 	North 	2 	0 	3 	6 	TX
    South 	2 	1 	0 	0 	TX
FL 	North 	1 	7 	4 	4 	FL
    South 	1 	2 	7 	9 	FL
CA 	North 	0 	0 	9 	8 	CA
    South 	8 	8 	8 	7 	CA
"""
# من أجل كل المستويات
df.assign(**df.index.to_frame())
"""
             a 	b 	c 	d 	State 	Direction
State Direction 						
TX 	North 	8 	7 	6 	9 	TX 	    North
    South 	6 	3 	1 	3 	TX    	South
FL 	North 	1 	9 	2 	8 	FL    	North
    South 	4 	4 	1 	7 	FL    	South
CA 	North 	8 	4 	0 	7 	CA    	North
    South 	9 	8 	5 	0 	CA    	South
"""

وفي الحالة العادية يمكنك استخدام الدالة insert أيضاً:

import pandas as pd
df = pd.DataFrame({'Roll Number': ['20CSE29', '20CSE49'],
				'Name': ['Amelia', 'Sam'],
				'Subject': ['Physics', 'Physics']})
df
"""
    Roll Number 	Name 	Subject
0 	20CSE29   	Amelia 	Physics
1 	20CSE49   	Sam 	Physics
"""
#insert استخدام الدالة 
df.insert( 0, column="new",value = df.index.values)
df
"""
  new 	Roll Number 	Name 	Subject
0 	0 	20CSE29 	Amelia 	Physics
1 	1 	20CSE49 	Sam 	Physics
"""

 

تم التعديل في بواسطة Ali Haidar Ahmad

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...