按美元金额对 csv 列进行排序,然后删除重复项

Sorting csv column by dollar amount then removing duplicates

我有一个如下所示的 csv 文件:

我已经阅读了几乎所有关于此的其他主题,但无法理解。 我需要读入文件,将收入列从最高到最低排序,然后删除所有重复的县,因为同一个县可能处于不同的州。

import csv
import operator

reader = csv.reader(open("data.csv"))
sorted_list = sorted(reader, key=(operator.itemgetter(10)), reverse=True)


with open("high_county_spend.csv", "w") as f:
  csv.writer(f).writerows(sorted_list)

我试过这个:

sorted_list = sorted(reader, key=int(operator.itemgetter(10).split("$")), reverse=True)

但是 operator.itemgetter 没有 split() 属性。

使用pandas

import pandas as pd

# read data
df = pd.read_csv('data.csv')
# convert the string column to an int
df['income'] = df['income'].str.strip('$').astype(int) # or float if there are decimals .astype(float)
# sort values and drop duplicates
new_df = df.sort_values('income', ascending=False).drop_duplicates(keep='first')

It_is_Chris 所述,pandas 库可能是可取的,但要回答你的问题:

import operator
reader = ['', '', '']

sorted(reader, key=lambda x: int(x.split("$")[-1]), reverse=True)


Out[204]: ['', '', '']

问题是 operator.itemgetter(n) 需要一个可迭代对象(例如列表),但您提供了一个整数。