[英]What's a pythonic way (native function in pandas) to count occurrences of a certain value within cases (SPSS COUNT equivalent)?
我需要計算每個案例在一系列列中出現的某個值(假設它是3 )。 為此,我編寫了如下腳本:
import pandas as pd
import numpy as np
objsourcedf = pd.DataFrame({"a": [1, 2, 2], "b": [3, 1, 1],
"c": [3, 2, 1], "d": [4, 3, 8]})
print(objsourcedf)
objauxdf = objsourcedf.transpose()
objauxdf.loc["counts"] = np.sum(objauxdf == 3)
objsourcedf = objsourcedf.assign(counts=list(objauxdf.loc["counts"]))
print(objsourcedf)
第一個print
是:
a b c d
0 1 3 3 4
1 2 1 2 3
2 2 1 1 8
第二:
a b c d counts
0 1 3 3 4 2
1 2 1 2 3 1
2 2 1 1 8 0
盡管它工作正常,但我很確定有一種更 Pythonic 的方法可以做到這一點。 'pythonic' 我的意思是使用原生的、簡潔的pandas
功能並且不循環遍歷列/行。 例如,在 SPSS 中有一個簡單的count
命令,因此對於這個objsourcedf
這一行將是:
count counts = a b c d (3).
execute.
可悲的是,作為 Python 和pandas
的初學者,我找不到任何東西,所以我問你是否有更簡單的方法來獲得出現?
我希望這符合“Pythonic”的條件:
objsourcedf['count'] = objsourcedf.eq(3).sum(axis=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.