[英]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:我正在处理一个表(csv 文件),其中包含以下数据:
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.所以你可以看到所有的名字都被排序了,但卡罗琳沃克的卷号是 16。所以我想要一种方法来只对卷号进行排序,而不影响其他任何列。 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.请帮助我,并记住我还是 Python 的初学者。
just use pandas.只需使用熊猫。 df['roll_no'] = range(1:len(df))
pandas
is one way. pandas
是一种方式。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.