![](/img/trans.png)
[英]Writing check that all pandas DataFrame column values meet a certain values?
[英]Check for a column in pandas dataframe for all elements if they are in a set of values
我们有一个 pandas DataFrame df
和一组值set_vals
。
对于特定的列(假设'name'
),我现在想计算一个新列,只要df['name']
的值在set_vals
中,该列就为True
,否则为False
。
一种方法是写:
df['name'].apply(lambda x: x in set_vals)
但是当df
和set_vals
都变大时,这种方法非常慢。 有没有更有效的方法来创建这个新列?
真正的问题是df['name'].apply(lambda x: x in set_vals)
的复杂度是 O(M*N) 其中 M 是df
的长度,N 是set_vals
的长度,如果set_vals
是一个列表(或搜索复杂度为线性的另一种类型)。
如果set_vals
进行哈希处理(变成dict
类型),复杂度可以提高到O(M),搜索复杂度将是O(1)。
我为您找到了解决方案,它称为 MapReduce。
你可以在这里阅读
总的来说就是一个在多节点上并行处理大数据的编程model。
有一个视频解释并显示了 MapReduce 的示例: MapReduce 视频
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.