python - 什么是 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
我找不到任何东西,所以我问你是否有更简单的方法来获取事件?
解决方案
我希望这有资格成为“Pythonic”:
objsourcedf['count'] = objsourcedf.eq(3).sum(axis=1)
推荐阅读
- html - 手机上点击的链接在页面底部打开图像,而不是在链接位置
- python - 将月份和年份分开的两列合并为一列以减法天数
- python - 在 Mac Os 上使用 Tkinter Gui 时出现启动错误
- amazon-ec2 - 有什么方法可以从 Azure DevOps 发布管道启动 EC2 实例?
- reactjs - 新请求不发送以前收到的 http cookie
- r - 使用 R 库 rvest 进行 Goodread 网页抓取
- java - 我应该重构它以使用地图吗?
- python - 不使用 mod (%) 查找素数
- audio - 如何在 Webflow 中添加音乐
- android - 颤振位置插件存储库返回 403