我有数据框,如果有一些值,我必须删除行。
例如,
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
答案 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