我正在处理一些相当大的数据集(500,000个数据点,每个数据点有30个变量),希望找到最有效的过滤方法。
为了与现有代码兼容,数据被构造为列表字典,但不能转换(例如转换为PandasDataFrame),必须就地过滤。
工作示例:
data = {'Param0':['x1','x2','x3','x4','x5','x6'],
'Param1':['A','A','A','B','B','C'],
'Param2': [100,200,150,80,90,50],
'Param3': [20,60,40,30,30,5]}
# Param0 keys to keep
keep = ['x2', 'x4']
filtered = {k: [x for i, x in enumerate(v) if data['Param0'][i] in keep] for k, v in data.items()}
结果filtered
给出了所需的输出,但这在规模上非常慢。
有没有更快的方法?
2条答案
按热度按时间b1zrtrql1#
我会这样做:
时间
结果如下:
qcuzuvrc2#
首先创建一个
look_up_idx
可能是一个更好的主意:或者加上使用
numpy
x一个一个一个一个x一个一个二个x