簡體   English   中英

如何根據閾值化簡一個pandas dataframe

[英]How to simplify a pandas dataframe based on treshold value

這是我的 dataframe

      A       B        C        D
1     0    0.41     0.35     0.61
2     0    0.41     0.35        0
3     0    0.21        0        0
4  0.11     0.4     0.53        0

我只想顯示包含值大於 0.5 的列或行,就像這樣

       C        D
1    0.35     0.61
4    0.53        0

我應該怎么做

使用DataFrame.gt測試更大的值,使用DataFrame.any測試是否匹配至少一個值並在DataFrame.loc中過濾:

m = df.gt(0.5)
df1 = df.loc[m.any(axis=1), m.any()]
print (df1)
     C     D
1  0.35  0.61
4  0.53  0.00

您可以使用雙boolean 索引 使用gt計算 boolean 掩碼。 然后檢查每個軸上是否有any值是 True 並將其用於使用loc的選擇

m = df.gt(0.5)
df.loc[m.any(1), m.any(0)]

output:

      C     D
1  0.35  0.61
4  0.53  0.00
中間體

m

       A      B      C      D
1  False  False  False   True
2  False  False  False  False
3  False  False  False  False
4  False  False   True  False

m.any(1)

1     True
2    False
3    False
4     True
dtype: bool

m.any(0)

A    False
B    False
C     True
D     True
dtype: bool

暫無
暫無

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

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