我有一个包含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模块呢?
答案 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]])