使用Python将最大值拉到输出fi

2024-05-14 17:45:11 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,在试着教自己最好的方法是什么之后,我一直在寻找这个具体的答案。我是python新手,希望有人知道一个快速的方法来帮助我!以下是输入数据文件的示例:

纬度、经度、变量、Id、日期时间
47.022,-104.330,10,MBVR,12/12/20 06:36:00
47.022,-104.330,11,MBVR,12/12/20 06:26:00
48.810,-104.253,10,MCOM,12/12/20 06:41:00
48.810,-104.253,13,MCOM,12/12/20 06:38:00
48.810,-104.253,12,MCOM,12/12/20 06:48:00
47.022,-104.330,11,MBVR,12/12/20 05:17:00
47.022,-104.330,10,MBVR,12/12/20 05:34:00
47.022,-104.330,12,MBVR,2012年12月12日05:24:00

文件可以有许多不同的id,这只是一个示例。我让程序停止接收数据并将其分离出来,然后编写一个输出文件。以下是我的部分代码:

csv_max = 'X:\\csv\\lsrwnd.dat'
my_file = open(csv_max, "rb")
rowadd = my_file.next()
for line in my_file:
    items = line.split(",")
    coords = items[0:2]
    wind = items[2]
    station = items[3]
    timestamp = items[4]

从这一点来看,我的问题是。我需要做的是创建一个仅包含“id”列最大值的输出文件。所以,如果“station”被重复,我需要程序运行该站的每次出现,找到max“id”,并且只返回每个“station”的最大值“id”的行。从上面的数据示例中,我想要的是:

48.810,-104.253,13,MCOM,12/12/20 06:38:00
47.022,-104.330,12,MBVR,2012年12月12日05:24:00

剩下的可以扔掉。对于MCOM,最大id为13,对于MBVR,最大id为12。所以如果有50个不同的电台,我只需要返回50条线路,返回的50条线路中的每一条都是该车站的最大“id”。我可以创建输出文件,但是如何获得每个工作站的max id数据,以及其他元素?我试着用字典来计算最大值,但是我试着用最大值来计算。“date-time”变量并不重要(就需要最近或第一次出现的变量而言)。提前感谢您的帮助!在


Tags: 文件csv数据方法id示例myline
2条回答

当您迭代行时,将max id值存储在名为max_stations的字典中。在

csv_max = 'X:\\csv\\lsrwnd.dat'
my_file = open(csv_max, "rb")
rowadd = my_file.next()
max_stations = {}
for line in my_file:
    items = line.split(",")
    coords = items[0:2]
    wind = items[2]
    station = items[3]

    try:
        current_wind = max_stations[station]
    except IndexError:
        current_wind = wind
    max_wind = wind if wind >= current_wind else current_wind  

    max_stations[station] = max_wind
    timestamp = items[4]
import csv
d = {}
with open('input.csv', 'r') as f:
    csvr = csv.DictReader(f)
    for rec in csvr:
        if rec['Id'] not in d or int(rec['Var']) > int(d[rec['Id']]['Var']):
            d[rec['Id']] = rec
with open('output.csv', 'w') as f:
    csvw = csv.DictWriter(f, fieldnames=csvr.fieldnames)
    csvw.writeheader()
    csvw.writerows(d.itervalues())

在输出.csv此文件现在看起来像:

^{pr2}$

相关问题 更多 >

    热门问题