简体   繁体   中英

How do you sort only the first column in a csv file and not affect any of the other columns while doing so using python

i am working on a table(csv file) where it has the following data:

roll_no,student_name,grade,email_id  
1,Aarav Gosalia,Grade 11,aarav.gosalia@flag.org.in  
2,Aarav Rawal,Grade 11,aarav.rawal@flag.org.in  
3,Abizar Chitalwala,Grade 11,abizar.chitalwala@flag.org.in  
4,Ahad Motorwala,Grade 11,ahad.motorwala@flag.org.in  
5,Armaan Adenwala,Grade 11,armaan.adenwala@flag.org.in  
6,Aryan Shah,Grade 11,aryan.shah@flag.org.in  
7,Baasit Motorwala,Grade 11,baasit.motorwala@flag.org.in  
16,Caroline Walker,Grade 11,caroline.walker@flag.org.in  
8,Darsshan Kavedia,Grade 11,darsshan.kavedia@flag.org.in  
9,Devanshi Rajgharia,Grade 11,devanshi.rajgharia@flag.org.in  
10,Dhruv Jain,Grade 11,dhruv.jain@flag.org.in  
11,Eisa Patel,Grade 11,eisa.patel@flag.org.in  
12,Esha Khimawat,Grade 11,esha.khimawat@flag.org.in  
13,Fatima Unwala,Grade 11,fatima.unwala@flag.org.in  
14,Hamza Erfan,Grade 11,hamza.erfan@flag.org.in  
15,Harsh Gosar,Grade 11,harsh.gosar@flag.org.in  

so as you can see all of the names are sorted but the roll number of caroline walker is 16. so i want a way to sort only the roll numbers and not affect any of the other columns while doing so. I want the final table to look like this:

roll_no,student_name,grade,email_id   
1,Aarav Gosalia,Grade 11,aarav.gosalia@flag.org.in  
2,Aarav Rawal,Grade 11,aarav.rawal@flag.org.in  
3,Abizar Chitalwala,Grade 11,abizar.chitalwala@flag.org.in  
4,Ahad Motorwala,Grade 11,ahad.motorwala@flag.org.in  
5,Armaan Adenwala,Grade 11,armaan.adenwala@flag.org.in  
6,Aryan Shah,Grade 11,aryan.shah@flag.org.in  
7,Baasit Motorwala,Grade 11,baasit.motorwala@flag.org.in  
8,Caroline Walker,Grade 11,caroline.walker@flag.org.in  
9,Darsshan Kavedia,Grade 11,darsshan.kavedia@flag.org.in  
10,Devanshi Rajgharia,Grade 11,devanshi.rajgharia@flag.org.in  
11,Dhruv Jain,Grade 11,dhruv.jain@flag.org.in  
12,Eisa Patel,Grade 11,eisa.patel@flag.org.in  
13,Esha Khimawat,Grade 11,esha.khimawat@flag.org.in  
14,Fatima Unwala,Grade 11,fatima.unwala@flag.org.in  
15,Hamza Erfan,Grade 11,hamza.erfan@flag.org.in  
16,Harsh Gosar,Grade 11,harsh.gosar@flag.org.in  

Please help me and keep in mind that i am yet a beginner in python.

just use pandas. df['roll_no'] = range(1:len(df))

pandas is one way.

import pandas as pd

df = pd.read_csv('file.csv')
df.sort_values(by='roll_no')
df.to_csv('file.csv',index=False)

This will work:

df = pd.DataFrame({'id':[1,3,2,7],
                   'name': ['M', 'r', 'd', 'd']})
df['id'] =  list(df['id'].sort_values())
df

Result:

    id  name
0   1   M
1   2   r
2   3   d
3   7   d

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM