4 回答

TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊
>>> sum(map(bool,[True, True, False, False, False, True]))
3
答案是 3,因為True == 1
或只有總和:
>>> sum([True, True, False, False, False, True])
3
或使用計數(shù)():
lst = [True, True, False, False, False, True]
print(count(lst)

TA貢獻(xiàn)2051條經(jīng)驗 獲得超10個贊
我假設(shè)您使用的是熊貓數(shù)據(jù)框,所以我添加了一種快速方法。BTW:實際上你的使用count是錯誤的。它只能返回某些東西(例如列表)的長度,但不能用作過濾器。
當(dāng)您添加了所需的輸出時,我現(xiàn)在了解您嘗試實現(xiàn)的目標(biāo)。我添加了一個新的片段。我再次過濾“真”值。在下一行中,我根據(jù)其列內(nèi)容開始對行求和。
import pandas as pd
# Create your list
# initialize list of lists
data = [ [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 DataFrame
df = pd.DataFrame(data, columns=['id', 'click'])
df = df.sort_values(by=['id'])
#------------------------------------------------------------------------------#
# Filter for key value true
df = df[df.click == True]
# Merge lines depending of it's column content
filtered = df.groupby('id').agg({ 'click':'sum'}).reset_index()
# If we need it, rename the column
filtered = filtered.rename(columns={"click": "click_count"})
# Print out the list
print(filtered)
如果這是您的輸入(數(shù)據(jù)框):
id click
0 0 True
1 1 False
2 1 True
9 1 True
4 2 True
5 2 False
7 2 True
11 2 True
6 3 False
8 4 False
3 5 True
10 6 True
使用該代碼段,您將獲得以下輸出:
id click_count
0 0 1.0
1 1 2.0
2 2 3.0
3 5 1.0
4 6 1.0

TA貢獻(xiàn)1815條經(jīng)驗 獲得超13個贊
如果情況是這樣的:
原始數(shù)據(jù)框:
id click
0 0 True
1 1 False
2 1 True
3 1 True
4 2 True
5 2 False
6 3 False
我希望結(jié)果是一個新的數(shù)據(jù)框,像這樣(計算“真”的數(shù)量):
id click_count
0 0 1
1 1 2
2 2 1
3 3 0
如何修改我的以下代碼(不起作用)或編寫新代碼以實現(xiàn)我的期望?
click_yes = events.groupby("id")["click"].count(True).reset_index()
謝謝 ?。?!
添加回答
舉報