【问题标题】:Sorting csv column by dollar amount then removing duplicates按美元金额对 csv 列进行排序,然后删除重复项
【发布时间】:2021-09-01 15:53:28
【问题描述】:

我有一个 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() 属性。

【问题讨论】:

    标签: python csv sorting duplicates


    【解决方案1】:

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

    import operator
    reader = ['$10', '$20', '$5']
    
    sorted(reader, key=lambda x: int(x.split("$")[-1]), reverse=True)
    
    
    Out[204]: ['$20', '$10', '$5']
    

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

    【讨论】:

      【解决方案2】:

      使用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')
      

      【讨论】:

        猜你喜欢
        • 2012-08-22
        • 1970-01-01
        • 2021-09-19
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        • 2012-08-11
        • 2019-11-13
        • 1970-01-01
        相关资源
        最近更新 更多