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

السؤال

نشر

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

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
نشر (معدل)

كما أشار أحمد. وفي حالة كان لدينا مستويين للفهرس أي حالة 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
  • 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

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...