簡體   English   中英

根據多個條件從 pandas dataframe 中刪除具有 NaN 的行

[英]Drop rows with NaNs from pandas dataframe based on multiple conditions

我有一個帶有很多 NaN 的 dataframe。

y列表示事件的計數, val表示該 yeat 中每個事件的值, total表示兩列的乘積。

由於values不可用(多達 80% 的數據丟失),許多列都有零,許多列有 NaN。是 4 列。

y17 y18 y19 y20 val17 va18 val19 val20 total17 total18 total19 total20
 1   2   1   2    2    2     2    2       1      4        2      4
 2   2   2   2    2    2     2    2       4      4        4      4
 3   3   3   3   NaN  NaN   NaN  NaN     NaN    NaN      NaN    NaN
 0   0   0   0    1    2     3    4       0      0        0      0
 0   0   0   0   NaN  NaN   NaN  NaN     NaN    NaN      NaN    NaN

我想保留所有值為零和數字行,並且我想保留前四列(多個條件)為零的行。

預期 output

y17 y18 y19 y20 val17 va18 val19 val20 total17 total18 total19 total20
 1   2   1   2    2    2     2    2       1      4        2      4
 2   2   2   2    2    2     2    2       4      4        4      4
 0   0   0   0    1    2     3    4       0      0        0      0
 0   0   0   0   NaN  NaN   NaN  NaN     NaN    NaN      NaN    NaN

謝謝!

只需通過all條件

out = df[df.iloc[:,:4].eq(0).all(1) | df.notna().all(1)]
Out[386]: 
   y17  y18  y19  y20  val17  ...  val20  total17  total18  total19  total20
0    1    2    1    2    2.0  ...    2.0      1.0      4.0      2.0      4.0
1    2    2    2    2    2.0  ...    2.0      4.0      4.0      4.0      4.0
3    0    0    0    0    1.0  ...    4.0      0.0      0.0      0.0      0.0
4    0    0    0    0    NaN  ...    NaN      NaN      NaN      NaN      NaN
[4 rows x 12 columns]

暫無
暫無

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

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