我有一个数据框:
df = pd.DataFrame(np.random.randn(10, 3), columns=list('XYZ'))
df.insert(0, 'NAME', pd.Series(list('ABCDEFGHIJ')))
并希望将指定列 (
'X', 'Y', 'Z'
) 中的正条目数作为数据帧的新列。这样做的最佳方法是什么?
最佳答案
这是一种方法:
df['COUNT'] = df.select_dtypes(include='float64').gt(0).sum(axis=1)
# NAME X Y Z COUNT
# 0 A -0.033066 -1.064625 -0.299286 0
# 1 B 0.902976 -1.703256 -0.011417 1
# 2 C -2.537364 -0.216643 1.051398 1
# 3 D 1.073677 -1.486599 -0.827829 1
# 4 E 2.157901 0.425371 -1.659263 2
# 5 F -1.589662 -0.382535 0.454324 1
# 6 G 0.487965 0.279265 0.820486 3
# 7 H 0.496104 -0.680161 0.763793 2
# 8 I -0.034518 -0.479307 -0.071954 0
# 9 J -0.170412 0.558505 -1.742784 1
select_dtypes
方法是不言自明的,但在这种情况下,它对于过滤到特定 dtype 的列很有用,而无需担心列名。.gt
方法( documentation )测试系列值是否大于参数值(在本例中为 0
),并返回 bool 值。然后我们可以计算 True 值的行式总和,以获得满足我们标准的值的计数。
关于pandas - 作为新列的范围内正值的数据框计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48308770/