Python 将df的所有负值相加
我需要把df中所有的负值求和 我正在尝试更改此代码,以将df中的负值相加。理想的结果是在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.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