我是Python的新手,我被困在下面的列表中:
IN022023000',20170101,null,126.0, 230, 110
IN022023000',20170102,null,126.0, null, null
IN022023000',20170103,null,126.0, null, null
IN022023000',20170104,null,126.0, null, null
IN022023000',20170105,null,126.0, 250, 110
我正在通过表格创建此列表
(stID,sDate,PRCP,TAVG,TMAX,TMIN)
在这里您可以看到日期20170103
的最后一个列的数据丢失。我想实现一种逻辑,该逻辑将根据某些规则填充这些缺失的值。
如果缺少某个日期((TMAX,TMIN)
)的后两个值20170103
,请移回列表中的上一个日期,并查找TMAX
的值,然后TMIN
(如果有)将其取值并将其估算到缺失的日期。
如果后退也给我带来缺失的价值,那么我将向前走一天,做同样的事情。
如何在Python中实现这一目标?
答案 0 :(得分:0)
我假设null与None相同,并且您的表是一个列表列表。我还假定初始列的每个元素都是字符串文字。 请参阅下面的脚本,它应该是您想要的。
null = None
table = [['IN022023000',20170101,null,126.0, 230, 110],
['IN022023000',20170102,null,126.0, null, null],
['IN022023000',20170103,null,126.0, null, null],
['IN022023000',20170104,null,126.0, null, null],
['IN022023000',20170105,null,126.0, 250, 110]]
for i in range(len(table)):
if table[i][4:6] == [null, null]:
if i>0 and table[i-1][4:6] != [null, null]:
table[i][4:6] = table[i-1][4:6]
elif i < (len(table)-1):
table[i][4:6] = table[i+1][4:6]
from pprint import pprint
pprint(table)
使用给定的数据,输出看起来像这样。
[['IN022023000', 20170101, None, 126.0, 230, 110],
['IN022023000', 20170102, None, 126.0, 230, 110],
['IN022023000', 20170103, None, 126.0, 230, 110],
['IN022023000', 20170104, None, 126.0, 230, 110],
['IN022023000', 20170105, None, 126.0, 250, 110]]
这是Python的优点,也是学习它的好主意。一旦真正做好了准备,您就可以通过编写简短的小脚本来使用它来自动化各种任务,最终使您的生活变得更加轻松。