簡體   English   中英

Pandas dropna 在特定行上

[英]Pandas dropna on specific rows

import pandas as pd
df = pd.DataFrame({'ticker':['x','x','y','z','z'],
                   'bid':[1,2,np.nan,2,np.nan]})

使用 pandas .dropna()是否可以從指定的索引范圍或數據子集中刪除行? 例如,在上面的 DataFrame 中,如果我只想在索引中刪除 ticker 等於'z'行。 這有望返回:

ticker bid
x       1
x       2
y       np.nan
z       2

一種選擇是分別檢查這兩個條件:

In [13]: df[(df['bid'].notnull()) | (df['ticker'] != 'z')]
Out[13]:

  ticker  bid
0      x  1.0
1      x  2.0
2      y  NaN
3      z  2.0
df.loc[df.ticker == "z"] = df.loc[df.ticker == "z"].dropna()
df.dropna(subset=["ticker"])

不確定當我有更多列並且需要指定它們是否缺少 2 個 nan 時這是否更好(在第一次刪除中使用.dropna(thresh=2)

您可以將dropnamaskfillna一起使用:

df.mask(df.eq('z')).dropna(how='all').fillna({'ticker':'z'})

Output:

 ticker  bid
0      x  1.0
1      x  2.0
2      y  NaN
3      z  2.0

或者

df.mask(df.eq('z')).dropna(how='all').mask(df.eq('z'),'z')

暫無
暫無

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

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