根据条件查找熊猫数据框中的列数

时间:2019-02-12 13:37:26

标签: python-3.x pandas dataframe

我正在使用以下方法来查找具有55k行的熊猫数据帧的计数。这包括在站点列表的for循环中(4000个站点)。当包含下面的行时,需要很长时间才能完成4000个站点的循环。

for i in g_sitelist:
   x = len(dfreglist[(dfreglist['site'] == i) & (dfreglist['isactive'] == 1)])

还有其他更好的方法可以使循环在一秒钟内完成。

2 个答案:

答案 0 :(得分:1)

使用numpy-将每一列转换为数组并调用np.sum

m = (dfreglist['isactive'].values == 1)
for i in g_sitelist:
   x = np.sum((dfreglist['site'].values == i) & m)

更快的解决方案:

df = dfreglist[dfreglist['site'].isin(g_sitelist) & (dfreglist['isactive'].values == 1)]

out = df['site'].value_counts() 

答案 1 :(得分:1)

您可以使用value_counts()

site_counts = dfreglist[dfreglist['isactive'].eq(1)]['site'].value_counts()

这将提供一系列site值和有效的计数,您可以对其进行迭代。