在python中基于值删除行

2024-06-25 05:59:11 发布

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

我有一些代码在csv文件中读取。然后,该代码根据用户输入添加值。我遇到的问题是删除包含无效值的条目。特定的无效值是M。我用M表示csv文件中的missing。所以本质上我想做的是让用户输入开始和结束月份,然后让代码加上降水值。但是,如果字符串应该包含一个M,我不想包括那行数据。例如…下面包括部分样品。在

Station,        Stat,       lat,      lon,      JAN,  FEB,  MAR,  APR,  MAY,  JUN,  JUL,  AUG  
Bainville 6 NE, 24-0408-06, 48.14065, -104.267, 0.10, 0.01, 0.12, 1.23, 0.02, 0.34, M,    0.00  
Brockton 20S,   24-1164-06, 47.5075,  -104.324, M,    0.08, 0.13, 1.54, 2.43, 1.23, 1.12, 0.9  
Cohagen,        24-1875-06, 47.564,   -106.7,   0.3,  0.37, M,    0.76, 1.55, 1.69, 0.35, 0.41  
Sidney,         24-7560-06, 47.36,    -104.47,  0.1,  0.21, 0.05, 1.21, M,    1.25, 2.75, 0.89

现在如果用户选择一月到三月月份,我希望Brockten行(jan)和Cohagen行(mar)被省略,因为值是M。但是如果用户选择月份apr到may,那么要省略的行将是Sidney。在

我希望这有道理。我知道这篇文章已经很长了,但我也会包括我的代码。在

^{pr2}$

非常感谢任何帮助。在


Tags: 文件csv数据字符串代码用户样品条目
2条回答

您可以使用如下代码确认某些单元格是否包含浮点(有效)而不是字符:

def is_number(s):
try:
    float(s) # for int, long and float
    return true
except ValueError:
    return False

一旦发现“问题”行,您可以通过拼接删除该行,代码如下:

^{pr2}$

在代码开始工作之前,需要解决一些问题。我不完全确定你想达到什么目的,但以下是一些建议:

mdict值对于您提供的示例数据不正确-JAN位于标题行的位置3。在

理想情况下,您可以通过解析CSV的第一行而不是将其丢弃,从而使查找过程化。你可以试试这个。。。在

header_row = filereader.next() # if the months might NOT be uppercase, fix that here...
start_num = header_row.index(month_start.upper())
end_num = header_row.index(month_start.upper())

修复后,可以检查列表中的“M”,并在理解的情况下使用sum()进行加法。既然我不确定你想如何处理“好”行,我会告诉你在哪里可以找到答案。。。在

^{pr2}$

把你的需要弄清楚一点,我也许能帮你更多。。。在

汤姆

相关问题 更多 >