我有一个包含多行数据的excel文件,但也有很多空格。主要的问题是,我的加权平均值之前有一天数据的常规平均值,然后是第二天的许多空格。因此,当我使用xlrd将其拉出时,我得到一个非常混乱的数组。
我想我知道如何摆脱空白区域,但是我的列表中有一些数据没有加权平均值。所以我需要搜索我的列表并删除其后没有空格的任何值,然后搜索列表并删除所有空格。
例如我想要这个:
[754, 753.554, '', '', '', '', '', 653.455, '', '', 258, 235.6464, '' , '', '']
返回:
[753.554, 653.455, 235.6464]
有什么建议吗?
答案 0 :(得分:2)
>>> l = [754, 753.554, '', '', '', '', '', 653.455, '',
'', 258, 235.6464, '' , '', '']
>>> filter(None, [i for i, j in zip(l, l[1:] + ['']) if j == ''])
[753.554, 653.455, 235.6464]
答案 1 :(得分:2)
实际上这已经足够了:
data = filter(None, [754, 753.554, '', '', '', '', '', 653.455, '', '', 258, 235.6464, '' , '', ''])
假设weighted average
将是浮动数字:
filter(lambda x: not isinstance(x, int),filter(None, a))
但您也可以使用以下函数替换lambda x: not isinstance(x, int)
:
def is_not_weight_avg(x):
# do stuff here
# if it is w. avg.
return x
然后你可以将上面一行写成:
filter(is_weight_avg,filter(None, a)).
这是Python中的一些函数式编程。说明:
b=range(1,11)
def is_odd(x):
if x % 2:
return 0
else:
return x
filter(is_odd, b)
>>> [2, 4, 6, 8, 10]