什么是 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
功能并且没有循环通过 columns/rows。例如,在 SPSS 中有一个简单的 count
命令,因此关于此 objsourcedf
这一行将是:
count counts = a b c d (3).
execute.
遗憾的是,作为 Python 和 pandas
的初学者,我找不到任何东西,所以我想问你是否有更简单的方法来获取事件?
我希望这符合“Pythonic”的要求:
objsourcedf['count'] = objsourcedf.eq(3).sum(axis=1)
我需要计算每个案例的一系列列中某个值(假设它是 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
功能并且没有循环通过 columns/rows。例如,在 SPSS 中有一个简单的 count
命令,因此关于此 objsourcedf
这一行将是:
count counts = a b c d (3).
execute.
遗憾的是,作为 Python 和 pandas
的初学者,我找不到任何东西,所以我想问你是否有更简单的方法来获取事件?
我希望这符合“Pythonic”的要求:
objsourcedf['count'] = objsourcedf.eq(3).sum(axis=1)