Python 3.x 如何根据使用python复制的键值比较csv文件中某列的值

Python 3.x 如何根据使用python复制的键值比较csv文件中某列的值,python-3.x,csv,Python 3.x,Csv,我有一个包含两列的.csv文件: Item Value A 1.3 B 2.6 D 4.2 E 5.6 F 3.2 A 1.2 C 5.2 D 6.4 我想比较列项中的值并找到重复项,然后我想比较列值中相应的值。 在示例中,项目A和D是重复的,但它们的值不同。我想清除重复项并保存值最低的项 这正是我尝试过的,它是有效的,但它速度慢,资源昂贵。我相信有更好的方法,我可以用熊猫馆或其他图书馆来做这件事,所以请给我一个建议 file="file.csv" def

我有一个包含两列的.csv文件:

Item   Value
A   1.3
B   2.6
D   4.2
E   5.6
F   3.2
A   1.2
C   5.2
D   6.4
我想比较列项中的值并找到重复项,然后我想比较列值中相应的值。 在示例中,项目A和D是重复的,但它们的值不同。我想清除重复项并保存值最低的项

这正是我尝试过的,它是有效的,但它速度慢,资源昂贵。我相信有更好的方法,我可以用熊猫馆或其他图书馆来做这件事,所以请给我一个建议

file="file.csv"

def items_array(file):


    with open(file,"r") as file:
        file_reader=csv.DictReader(file,delimiter=";")
        for row in file_reader:
            items.append(row["Item_title"])
    items_set=set(items)
    return(items_set)


def find_lowest_value(item,file):

    items_and_values=[]

    with open(file,"r") as file:
        file_reader=csv.DictReader(file,delimiter=";")
        for row in file_reader:
            items_and_values.append([row["Item"],row["Value"]])


    value_for_single_item=[]

    for i in items_and_values:

        if item == i[0]:

            value_for_single_item.append(i[1])


    value_for_single_item.sort()

    return(value_for_single_item[0])


items=items_array(file)

for i in items:
    lv=find_lowest_value(i,file)
    print(i,lv)
由于实际.csv文件中的行数约为25k,使用我使用的方法大约需要30分钟。我相信这可以做得更快更聪明:)

这是预期的结果:

Item    Value
B   2.6
D   4.2
E   5.6
F   3.2
A   1.2
C   5.2

如果使用Pandas将csv导入数据帧,则无需读取文件25k,只需读取一次。而且会快得多

df=pd.read_csv(file,sep=";")

a=df.groupby("Item")["Value"].min()
基本上就是这样。两行代码,耗时2秒。熊猫一定是某种魔法