我试图用Python解决this question。在
ID = np.concatenate((np.repeat("A",5),
np.repeat("B",4),
np.repeat("C",2)))
Hour = np.array([0,2,5,6,9,0,2,5,6,0,2])
testVector = [0,2,5]
df = pd.DataFrame({'ID' : ID, 'Hour': Hour})
我们按ID
对行进行分组,然后从df
中删除所有行,其中{Hour
列中。我们可以实现以下目标:
我想让这段代码尽可能短而高效。有什么改进或替代解决方案的建议?在
与MaxU的解决方案类似,但我使用的是系列而不是集合:
不过,这里的过滤器可能更惯用:
^{pr2}$说明:
在
^{pr2}$lambda x: set(x) & test_set == test_set)
函数中,我们为每个组创建一组Hour
值:然后我们设置
test_set
的交集:再与
test_set
进行比较:PS我用
.apply()
代替.transform
只是为了展示它是如何工作的。在但我们需要使用transform,以便以后使用布尔索引:
首先为}s。然后^{} 表示新的
Hour
列中的每个ID
创建{Series
,与向量进行比较:计时:
^{pr2}$相关问题 更多 >
编程相关推荐