![](/img/trans.png)
[英]Select rows from a DataFrame based on values in a MULTIPLE columns in pandas
[英]select values based on condition on multiple columns for pandas dataframe in python
這是我的 dataframe 暗淡
var types count
0 var1 nominal 1
1 var2 ordinal 1
2 var3 quantitative 2
3 var4 quantitative 2
我想得到 dim["var"] 其中 dim["types"] == 定量和 dim["count"] > 1。然后結果是一個列表 [var3, var4]。 當我嘗試以下查詢時:
print(dim["var"].where((dim["types"] =="quantitative") & (dim["count"] > 1)))
我得到以下結果:
0 NaN
1 NaN
2 NaN
3 NaN
我不知道如何獲得所需的解決方案。
使用帶有掩碼的DataFrame.loc
:
L = dim.loc[(dim["types"] =="quantitative") & (dim["count"] > 1), "var"].tolist()
print (L)
['var3', 'var4']
您的 output 是正確的,因為Series.where
將 where 條件為False
的值轉換為缺失值:
print ((dim["types"] =="quantitative") & (dim["count"] > 2))
0 False
1 False
2 False
3 False
dtype: bool
print(dim["var"].where((dim["types"] =="quantitative") & (dim["count"] > 2)))
0 NaN
1 NaN
2 NaN
3 NaN
Name: var, dtype: object
因此,如果在條件 output 中使用==
是:
print ((dim["types"] =="quantitative") & (dim["count"] > 1))
0 False
1 False
2 True
3 True
dtype: bool
print(dim["var"].where((dim["types"] =="quantitative") & (dim["count"] > 1)))
0 NaN
1 NaN
2 var3
3 var4
Name: var, dtype: object
將loc
訪問器與您的掩碼一起使用。
>>> (dim["types"] == "quantitative") & (dim["count"] > 1)
0 False
1 False
2 True
3 True
dtype: bool
像這樣:
>>> dim.loc[(dim["types"] == "quantitative") & (dim["count"] > 1), 'var']
2 var3
3 var4
Name: var, dtype: object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.