簡體   English   中英

從數據框中刪除特定值

[英]Remove specific values from dataframe

我有以下相關矩陣:

symbol    abc    xyz    ghj
symbol    
abc       1      0.1    -0.2
xyz       0.1    1       0.3
ghj      -0.2    0.3     1

我需要能夠找到整個數據幀的標准偏差,但這必須排除完美的相關值,即:標准偏差一定不能考慮abc:abc,xyz:xyz,ghj:ghj

我可以使用以下方法獲取整個數據框的標准偏差:

df.stack().std()

但這考慮到了每個不正確的值。 標准差不應該包括項目與其自身相關的行/列組合(即:1)。 有沒有辦法刪除abc:abc,xyz:xyz,ghj:ghj。 然后計算標准偏差。

也許將其轉換為字典或其他內容?

如果使用numpy ,則可以使用np.extractnp.std

In [61]: import numpy as np

In [62]: a = np.array([[ 1. ,  0.1, -0.2],
                       [ 0.1,  1. ,  0.3],
                       [-0.2,  0.3,  1. ]])

In [63]: a
Out[63]: 
array([[ 1. ,  0.1, -0.2],
       [ 0.1,  1. ,  0.3],
       [-0.2,  0.3,  1. ]])

In [64]: calc_std = np.std(np.extract(a != 1, a))

In [65]: calc_std
Out[65]: 0.20548046676563256

np.extract(a != 1, a))返回包含的各要素的數組a不等於 1。

返回的數組如下所示:

In [66]: np.extract(a != 1, a)
Out[66]: array([ 0.1, -0.2,  0.1,  0.3, -0.2,  0.3])

提取之后,您可以使用np.std()輕松計算標准偏差。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM