Python 使用给定列表对CSV文件进行排序

Python 使用给定列表对CSV文件进行排序,python,pandas,csv,Python,Pandas,Csv,我有一个包含2列的csv文件和一个随机包含第一列所有值的列表。我想对csv文件进行排序,就像列表中包含值一样 CSV文件: Name age ---- ---- alice 17 bob 18 carol 19 Name age ---- ---- bob 18 carol 19 alice 17 列表 name = ['bob','carol','alice'] 预期输出: Name

我有一个包含2列的csv文件和一个随机包含第一列所有值的列表。我想对csv文件进行排序,就像列表中包含值一样

CSV文件:

 Name     age
 ----     ----
 alice    17
 bob      18
 carol    19
 Name     age
 ----     ----
 bob      18
 carol    19
 alice    17
列表

name = ['bob','carol','alice']
预期输出:

 Name     age
 ----     ----
 alice    17
 bob      18
 carol    19
 Name     age
 ----     ----
 bob      18
 carol    19
 alice    17

如何使用python模块来实现它

这里是python解决方案。如果确实需要,您可以在padnas中使用输出文件

导入csv
name=['bob'、'carol'、'alice']
将open('in.csv')作为f_-in,将open('out.csv','w')作为f_-out:
行={n:a代表n,csv.reader中的a(f_-in,分隔符=',')}
writer=csv.writer(f_out)
对于名称中的n:
writer.writerow([n,行[n]]))

这是python解决方案。如果确实需要,您可以在padnas中使用输出文件

导入csv
name=['bob'、'carol'、'alice']
将open('in.csv')作为f_-in,将open('out.csv','w')作为f_-out:
行={n:a代表n,csv.reader中的a(f_-in,分隔符=',')}
writer=csv.writer(f_out)
对于名称中的n:
writer.writerow([n,行[n]]))

您可以将列表转换为一个系列(指定与要排序的列相同的名称),然后合并。 合并应该是内部的、左侧的或外部的,这取决于列表和文件的重叠以及您希望如何处理差异

import pandas as pd

df_ages = pd.DataFrame([('alice', 17), ('bob', 18), ('carol', 19)], columns=['Name', 'age'])

name = ['bob','carol','alice']
name = pd.Series(name, name='Name')


df_ages = pd.merge(name, df_ages, how='outer')
结果:

    Name  age
0    bob   18
1  carol   19
2  alice   17

您可以将列表转换为一个系列(为其指定与要排序的列相同的名称),然后合并。 合并应该是内部的、左侧的或外部的,这取决于列表和文件的重叠以及您希望如何处理差异

import pandas as pd

df_ages = pd.DataFrame([('alice', 17), ('bob', 18), ('carol', 19)], columns=['Name', 'age'])

name = ['bob','carol','alice']
name = pd.Series(name, name='Name')


df_ages = pd.merge(name, df_ages, how='outer')
结果:

    Name  age
0    bob   18
1  carol   19
2  alice   17