簡體   English   中英

什么是pythonic方式(pandas中的本機函數)來計算案例中某個值的出現次數(SPSS COUNT等價物)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM