特定行上的熊猫dropna

时间:2019-10-01 15:54:57

标签: python pandas

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

是否使用大熊猫.dropna()从指定的索引范围或数据子集中删除行?例如在上面的DataFrame中,如果我只想在滴答声等于'z'的地方删除索引中的行。希望会返回:

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

3 个答案:

答案 0 :(得分:0)

一种选择是仅分别检查两个条件:

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

答案 1 :(得分:0)

df.loc[df.ticker == "z"] = df.loc[df.ticker == "z"].dropna()
df.dropna(subset=["ticker"])

不确定当我有更多列并需要指定它们是否缺少2个nan时(在第一滴中使用.dropna(thresh=2))是否更好?

答案 2 :(得分:0)

您可以将dropna mask fillna结合使用:

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

输出:

 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')