簡體   English   中英

Pandas Dataframe:使用計數功能過濾數據

[英]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.

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