使用pd.drop将行拖放到另一个数据框

时间:2019-07-29 08:19:03

标签: python pandas dataframe

我正在尝试根据多个条件删除行。我能够从数据框中成功删除行,但是在尝试将行拖放到另一个数据框(将行追加到另一个数据框)时遇到麻烦。

这很完美:

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中删除这些行。

我缺少一些逻辑吗?

1 个答案:

答案 0 :(得分:2)

首先获取索引,然后删除,而不必在filter语句中使用indexloc,请尝试:

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)

希望它能起作用!