不确定这到底是不是一个好主意,但是有一个以数组作为值的字典,比如
DF = {'z_eu': array([127.45064758, 150.4478288 , 150.74781189, -98.3227338 , -98.25155681, -98.24993753]),
'Process': array(['initStep', 'Transportation', 'Transportation', 'Transportation', 'Transportation', 'phot']),
'Creator': array(['SynRad', 'SynRad', 'SynRad', 'SynRad', 'SynRad', 'SynRad']) }
我需要根据其他两个键的值来选择数字数据(z_eu
)。你知道吗
到目前为止,我提出的一个解决方法是提取数组并遍历它们,从而创建另一个包含有效数据的数组。你知道吗
proc = DF['Process']; z= DF['z_eu']; creat = DF['Creator']
data = [z for z,p,c in zip(z, proc,creat) if (p == 'initStep') and c=='SynRad' ]
但不知何故,在我看来,这是一种可以完全避免的努力,首先要更明智地处理字典?而且,zip()
也需要很长时间。你知道吗
我知道数据帧是一个有效的选择,但不幸的是,由于我处理的是字符串,pandas似乎太慢了。你知道吗
欢迎任何提示!你知道吗
您可以循环一个数组,并通过索引获得正确的元素
更简单一点,使用条件切片可以编写
…或者仍然使用
zip
,您可以简化为基本上也是条件切片,使用
pandas
DataFrame
:原则上,我认为在
dict
中处理numpy
数组没有什么问题。如果直接在numpy
中进行运算,您会有很大的灵活性,有时运算效率会更高(您甚至可以利用numba
进行纯数值的、昂贵的计算)-但是如果不需要这样做,并且您基本上可以使用n*m表,pandas
dfs非常好而且方便。你知道吗如果您的数据集很大,并且希望执行如图所示的许多查找,则可能不希望对字符串执行这些查找。为了提高性能,您可以为示例中的每个“进程”或“创建者”提供唯一的ID(整数)。您只需要能够将它们映射回原始字符串,所以也要保留这些数据。你知道吗
相关问题 更多 >
编程相关推荐