MM们
>>> sum(map(bool,[True, True, False, False, False, True]))3答案是 3,因为True == 1或只有总和:>>> sum([True, True, False, False, False, True])3或使用计数():lst = [True, True, False, False, False, True] print(count(lst)
侃侃无极
我假设您使用的是熊猫数据框,所以我添加了一种快速方法。BTW:实际上你的使用count是错误的。它只能返回某些东西(例如列表)的长度,但不能用作过滤器。当您添加了所需的输出时,我现在了解您尝试实现的目标。我添加了一个新的片段。我再次过滤“真”值。在下一行中,我根据其列内容开始对行求和。import pandas as pd# Create your list# initialize list of listsdata = [ [0, True], [1, False], [1, True], [5, True], [2, True], [2, False], [3, False], [2, True], [4, False], [1, True], [6, True], [2, True]]# Create the pandas DataFramedf = pd.DataFrame(data, columns=['id', 'click'])df = df.sort_values(by=['id'])#------------------------------------------------------------------------------## Filter for key value truedf = df[df.click == True]# Merge lines depending of it's column contentfiltered = df.groupby('id').agg({ 'click':'sum'}).reset_index()# If we need it, rename the columnfiltered = filtered.rename(columns={"click": "click_count"})# Print out the listprint(filtered)如果这是您的输入(数据框): id click0 0 True1 1 False2 1 True9 1 True4 2 True5 2 False7 2 True11 2 True6 3 False8 4 False3 5 True10 6 True使用该代码段,您将获得以下输出: id click_count0 0 1.01 1 2.02 2 3.03 5 1.04 6 1.0