按美元金额对 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)
需要一个可迭代对象(例如列表),但您提供了一个整数。
我有一个如下所示的 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)
需要一个可迭代对象(例如列表),但您提供了一个整数。