我有一个如下的数据帧
User eve Ses
a 123 1
a 123 2
a 123 3
a 123 4
a 123 5
a 123 6
a 456 1
a 456 2
a 456 3
a 456 4
a 456 5
a 456 14
a 456 7
a 456 8
a 456 9
a 456 10
a 888 1
a 888 2
a 888 3
a 888 4
a 888 5
a 888 5
a 888 7
a 888 8
b 123 1
b 123 2
b 123 3
b 123 4
b 123 5
b 123 6
b 456 1
b 456 2
b 456 3
b 456 4
b 456 5
b 456 9
b 456 7
b 456 8
b 456 9
b 456 10
b 888 1
b 888 2
b 888 3
b 888 4
b 888 5
b 888 6
b 888 7
b 888 8
我想按User
分组&eve
并获取包含6或14的所有组的新数据帧
当我使用下面的代码时
df.groupby(['User','eve']).apply(lambda x: (x['Ses']==6).any()|(x['Ses']==14).any())
我准确地得到了6个或14个组,如下所示
User eve
a 123 True
456 True
888 False
b 123 True
456 False
888 True
dtype: bool
我只是不能使用这些信息来获取新的数据帧,它的组是True
。
预期的输出是如下所示的新数据帧。有人能指引吗
User eve Ses
a 123 1
a 123 2
a 123 3
a 123 4
a 123 5
a 123 6
a 456 1
a 456 2
a 456 3
a 456 4
a 456 5
a 456 14
a 456 7
a 456 8
a 456 9
a 456 10
b 123 1
b 123 2
b 123 3
b 123 4
b 123 5
b 123 6
b 888 1
b 888 2
b 888 3
b 888 4
b 888 5
b 888 6
b 888 7
b 888 8
为了提高性能,可以使用^{} 和^{} 以及由^{} 创建的掩码^{} 和辅助列:
应使用^{} 更改您的解决方案,但如果较大的数据帧或多组解决方案速度非常慢:
相关问题 更多 >
编程相关推荐