[英]Pandas Dataframe : Using the count function to filter data
我有一個 Pandas 數據框,我想通過應用基於計數函數的過濾器來從中創建一個新的數據框,以便只選擇計數等於指定數字的那些列。
例如在下面的數據框中:
month_end Col A Col B Col C Col D
200703 NaN NaN NaN NaN
200704 0.084 0.152 0.142 0.0766
200705 0.124 0.123 0.020 NaN
200706 NaN 0.191 0.091 0.149
200707 -0.136 0.047 0.135 -0.127
如果 my_variable = 4,則 df1 應僅包含 Col B 和 Col D 以及索引 month_end。
我該怎么做呢?
你可以做一些類似的事情:
df.loc[:,df.notna().sum(0).eq(4)]
ColB ColC
0 NaN NaN
1 0.152 0.142
2 0.123 0.020
3 0.191 0.091
4 0.047 0.135
或者還有count
,它在計數之前已經丟棄了:
df.loc[:,df.count().eq(4)]
如果要包含日期列,並且它不是索引:
ix = df.notna().sum(0).eq(4)
df.loc[:,ix.index[ix].union(['month_end'])]
ColB ColC month_end
0 NaN NaN 200703
1 0.152 0.142 200704
2 0.123 0.020 200705
3 0.191 0.091 200706
4 0.047 0.135 200707
另一個沒有循環的解決方案:
s = df.notna().sum(0) == 4
df = df.loc[:, s]
帶有 for 循環的解決方案:
for col in df.columns:
if (df[col].count() != 4):
df.drop(col, axis=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.