如何在lambda上删除行基

时间:2018-06-01 01:42:28

标签: python dataframe

我有数据框,如果有一些值,我必须删除行。

例如,

x not in ['N/A', ''] where x is columns

有没有像申请一样的方式?

 df[x] = df[x].apply(lambda x: x.lower())

我想的是:

df.drop.apply(lambda x: X not in ['N/A', ''])???

我的DF

     F   T   l
0    0   "0"   "0"
1    1   ""   "1"
2    2   "2"   ""

如果T ==“”或l ==“”

,则删除行
     F   T   l
0    0   "0"   "0"

我无法使用

df.drop(df.T == "") since the condition ("") depend on runtime data

2 个答案:

答案 0 :(得分:0)

如果您要删除行中'N/A'''的任何行,那么您可以使用布尔索引,只需取isin()的倒数,例如:

In []:
df[~df.isin(['N/A', '']).any(axis=1)]

Out[]:
   F  T  l
0  0  0  0

如果您需要限制列'A', 'l',请选择它们,例如:

df[~df[['A', 'l']].isin(['N/A', '']).any(axis=1)]

你也可以dict使用isin(),但这只有在列的值不同时才有用,例如:

df[~df.isin({'A': ['N/A', ''], 'l': ['']}).any(axis=1)]

答案 1 :(得分:0)

从以下answer,解决方案是:

 mask = df.pipe(lambda x: (x['T'].isin(['N/A', ''])) | (x['T'].isna()),)
 df.drop(df[mask].index, inplace=True)

这允许提供不同的lambdas