如果值不存在,请删除列的某些行

时间:2017-09-05 20:57:33

标签: python pandas dataframe

给出以下DataFrame:

import pandas as pd
d = pd.DataFrame({'Group':['a','a','c','c'],'Value':[1,1,2,2]})
print(d)

    Group   Value
0   a       1
1   a       1
2   c       2
3   c       2

由于没有一行包含' b',我想删除任何一行' a'。我只想删除' a'因为' b'中没有行。基。

我知道如何获取群组中的行数' b'像这样:

len(d.loc[d['Group']=='b'])

然后执行此操作:

if len(d.loc[d['Group']=='b'])==0:
    d=d.loc[d['Group']!='a']
print(d)

    Group   Value
2   c       2
3   c       2

...但我想知道如何在一行中将它用于.loc方法。

提前致谢!

1 个答案:

答案 0 :(得分:1)

.all的更直观的解决方案是创建一个掩码,然后使用if ~(d.Group == 'b').all(): d = d[d.Group != 'a'] d Group Value 2 c 2 3 c 2 。之后,只需重新分配到过滤的切片。

df.query

您还可以使用许多其他查询方法,例如df.*locdf1 = df1.set_index('VNAME') (df1['SHEET'].apply(pd.Series).stack() .reset_index(1, drop=True) .to_frame().assign(key=True) .set_index(0,append=True)['key'] .unstack() .fillna('') .rename_axis(None,1) .reset_index())