Python 将df的所有负值相加

Python 将df的所有负值相加,python,pandas,Python,Pandas,我需要把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', '

我需要把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)})
仅用于数字列,然后使用
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
df=pd.DataFrame({
“A”:列表('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.选择类型(np.编号)
out=np.nansum(df1.where(df1<0.values)
打印(输出)
-23.0
arr=df.选择类型(np.编号).值
out=arr[arr<0].sum()
打印(输出)
-23

如果我理解正确,那么:

您可以使用
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.sum:

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