使用给定的列表熊猫对CSV文件进行排序

时间:2020-02-22 17:09:23

标签: python pandas csv

我有一个包含2列的csv文件和一个随机包含第一列的所有值的列表。我想对csv文件进行排序,例如列表包含该值。

CSV文件:

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

列表

name = ['bob','carol','alice']

预期产量:

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

如何使用python pandas模块呢?

2 个答案:

答案 0 :(得分:3)

您可以将列表转换为pandas系列(为其指定与要订购的列相同的名称),然后进行合并。 合并应该是内部,左侧还是外部,具体取决于列表和文件的重叠以及您要如何处理差异

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

答案 1 :(得分:0)

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

import csv

name = ['bob','carol','alice']

with open('in.csv') as f_in, open('out.csv', 'w') as f_out:
    rows = {n: a for n, a in csv.reader(f_in, delimiter=',')}
    writer = csv.writer(f_out)
    for n in name:
        writer.writerow([n, rows[n]])