将所有a d的负值相加

2024-04-20 06:48:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要把df中所有的负值加起来。。。你知道吗

我正在尝试更改此代码以将df中的负值相加。期望的结果是有一个df中所有负值之和的变量。你知道吗

 df.values.sum()

说明性df代码:

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
                   'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
                   'C' : np.random.randn(8), 'D' : np.random.randn(8)})

Tags: 代码dffoonpbarrandomonepd
2条回答

如果我理解正确的话:

你可以使用numpy.sum()ravel()这样更快。你知道吗

>>> df
     A      B         C         D
0  foo    one -2.054930  0.426327
1  bar    one -2.118650  0.007930
2  foo    two  0.164903 -0.567713
3  bar  three  0.310177 -0.568993
4  foo    two -0.683752 -0.127916
5  bar    two -0.816596 -0.299638
6  foo    one  0.038310 -1.323183
7  foo  three  0.146634  1.281159

还可以将布尔df转换为一维数组并调用np.总和地址:

>>> np.sum((df < 0).values.ravel())
25

仅对数值列使用^{},然后仅使用sum筛选负值:

df = pd.DataFrame({
         'A':list('abcdef'),
         'B':[-4,5,0,5,5,4],
         'C':[7,-8,9,4,2,3],
         'D':[1,3,5,-7,1,0],
         'E':[5,3,6,9,2,-4],

})

df1 = df.select_dtypes(np.number)
out = np.nansum(df1.where(df1 < 0).values)
print (out)
-23.0

arr = df.select_dtypes(np.number).values
out = arr[arr < 0].sum()
print (out)
-23

相关问题 更多 >