简体   繁体   English

如何使用python对不带标题的csv文件进行排序?

[英]How to sort a csv file without headers using python?

How can I sort a csv file which is without header using python pandas? 如何使用python pandas对没有标题的csv文件进行排序? NOTE: The csv file is without headers. 注意:csv文件没有标题。

My File: 我的档案:

1,a123,adam,student
2,b345,becky,student
3,c678,charles,teacher
1,d987,dickson,teacher
2,e654,evanston,teacher

Expected output: 预期产量:

1,a123,adam,student
1,d987,dickson,teacher
2,b345,becky,student
2,e654,evanston,teacher
3,c678,charles,teacher

Use read_csv with parameter names for new columns names of Dataframe and then DataFrame.sort_values : 使用read_csv与参数names为新列名Dataframe ,然后DataFrame.sort_values

import pandas as pd

temp=u"""1,a123,adam,student

2,b345,becky,student

3,c678,charles,teacher

1,d987,dickson,teacher

2,e654,evanston,teacher"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), names=['a','b','c','d'])

print (df)
   a     b         c        d
0  1  a123      adam  student
1  2  b345     becky  student
2  3  c678   charles  teacher
3  1  d987   dickson  teacher
4  2  e654  evanston  teacher

df = df.sort_values('a')
print (df)
   a     b         c        d
0  1  a123      adam  student
3  1  d987   dickson  teacher
1  2  b345     becky  student
4  2  e654  evanston  teacher
2  3  c678   charles  teacher

Or use header=None for default columns names - RangeIndex : 或使用header=None作为默认列名称RangeIndex

df = pd.read_csv(pd.compat.StringIO(temp), header=None)

print (df)
   0     1         2        3
0  1  a123      adam  student
1  2  b345     becky  student
2  3  c678   charles  teacher
3  1  d987   dickson  teacher
4  2  e654  evanston  teacher

df = df.sort_values(0)
print (df)
   0     1         2        3
0  1  a123      adam  student
3  1  d987   dickson  teacher
1  2  b345     becky  student
4  2  e654  evanston  teacher
2  3  c678   charles  teacher

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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