首页 > 解决方案 > 什么是 pythonic 方式(pandas 中的本机函数)来计算案例中某个值的出现次数(SPSS COUNT 等效项)?

问题描述

我需要在每个案例的列范围内计算某个值的出现次数(假设它是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我找不到任何东西,所以我问你是否有更简单的方法来获取事件?

标签: pythonpython-3.xpandasspss

解决方案


我希望这有资格成为“Pythonic”:

objsourcedf['count'] = objsourcedf.eq(3).sum(axis=1)

推荐阅读