pandas在dataframe列中搜索值

时间:2017-11-08 03:04:15

标签: pandas

我有以下数据框,我想在列水果中搜索苹果,如果找到苹果则显示所有行。

Before : 
   number fruits     purchase
    0       apple     yes
            mango
            banana
    1       apple     no
            cheery      
    2       mango     yes
            banana
    3       apple     yes
            orange
    4       grapes    no
            pear

After:            
    number fruits     purchase
    0       apple     yes
            mango
            banana
    1       apple     no
            cheery      
    3       apple     yes
            orange

2 个答案:

答案 0 :(得分:1)

使用groupbyfilter过滤包含'apple'的群组:

df['number'] = df['number'].ffill()

df.groupby('number').filter(lambda x: (x['fruits'] == 'apple').any())

df_out.assign(number = df_out['number'].mask(df.number.duplicated()))\
  .replace(np.nan,'')

输出:

  number  fruits purchase
0      0   apple      yes
1          mango         
2         banana         
3      1   apple       no
4         cheery         
7      3   apple      yes
8         orange         

答案 1 :(得分:0)

您似乎正在使用'number'作为索引,因此我将假设这一点。

获取'apple'所在的数字,然后切入:

idx = df.index[df.fruits == 'apple']
df.loc[idx]