我正在尝试根据多个条件删除行。我能够从数据框中成功删除行,但是在尝试将行拖放到另一个数据框(将行追加到另一个数据框)时遇到麻烦。
这很完美:
dfAntrags = dfAntrags.drop(dfAntrags.loc[dfAntrags['Sachnr-null'] == True].index & ((dfAntrags.loc[dfAntrags['Difference-up'] == 0].index) | (dfAntrags.loc[dfAntrags['Difference-down'] == 0].index)))
这不能正常工作:
dfFaulty_claims = dfAntrags.drop(dfAntrags.loc[dfAntrags['Sachnr-null'] == True].index & ((dfAntrags.loc[dfAntrags['Difference-up'] == 0].index) | (dfAntrags.loc[dfAntrags['Difference-down'] == 0].index)))
后面的代码将“ dfAntrags”中的所有行追加到“ dfFaulty_claims”中,不仅是应根据条件进行过滤的行,而且不会从dfAntrags中删除这些行。
我缺少一些逻辑吗?
答案 0 :(得分:2)
首先获取索引,然后删除,而不必在filter语句中使用index
和loc
,请尝试:
idx = dfAntrags[(dfAntrags['Sachnr-null'] == True) & ((dfAntrags['Difference-up'] == 0) | (dfAntrags['Difference-down'] == 0))].index
第一个append
(在本例中为concat
):
dfFaulty_claims = pd.concat([dfFaulty_claims, dfAntrags.loc[idx, :]])
最后是drop
:
dfAntrags = dfAntrags.drop(idx)
希望它能起作用!