Python 3.x 在二进制数据框中计算行模式的最快方法

Python 3.x 在二进制数据框中计算行模式的最快方法,python-3.x,pandas,numpy,optimization,Python 3.x,Pandas,Numpy,Optimization,我正在尝试优化一段代码,该代码可以找到带有布尔项的数据帧的行模式。这里,行模式不是每列模式,而是重复次数最多的行向量 我有一种工作方式: some_binary_entry_dataframe=pd.dataframe(pd.np.random.rand(10300)

我正在尝试优化一段代码,该代码可以找到带有布尔项的数据帧的模式。这里,行模式不是每列模式,而是重复次数最多的行向量

我有一种工作方式:

some_binary_entry_dataframe=pd.dataframe(pd.np.random.rand(10300)<0.5)
pd.util.hash\u\u对象(某些\u二进制\u条目\u数据帧,index=False).mode()
但我发现它对于任务来说速度很快很慢,对于一个数据帧形状的
20x300
,速度大约为100ms。它已经成为我代码的瓶颈。如何在熊猫或numpy中优化这一点

编辑1: 我希望代码实现的一个更详细的示例是,我尝试过滤掉与多数不匹配的行(模式)

entries=pd.np.zero((3,3))
条目[1:,0]=1
#条目=[[0.0,0.0,0.0],[1.0,0.0,0.0],[1.0,0.0,0.0]]
__df=pd.DataFrame(entries.astype(bool))
row\u hashes=pd.util.hash\u\u对象(\u\u df,index=False)
mask=row\u hashes.isin(row\u hashes.mode())
__df=uu df[掩码]
#astype(int)=[1,0,0],[1,0,0]]
评测之后,CPU主要忙于调用
pd.util.hash\u\u object
,因此我尝试对其进行优化

编辑2: 我已经用
\uu df.apply(lambda x:hash(tuple(x)),axis=1)取代了散列。
具有很好的加速效果。

这种更“手动”的方法似乎要快得多:

从集合导入计数器
将numpy作为np导入
def二进制模式屏蔽计数器(a):
a=np.asarray(a)
cols=a.shape[1]
#将每行转换为一个大整数值

h=np.array([sum(int(v))我无法获得pd.util.hash\u pandas\u对象(一些二进制输入数据帧,index=False)。mode()
工作。你能添加示例数据帧和预期的o/p吗?@Divakar我添加了一行来生成一些测试数据。我以后可能会添加输入/输出的相关示例。