我正在尝试从数据框的不同列中删除不同的元素。
这是我到目前为止尝试过的
xdf
Out[46]:
Name Score1 Score2 Score3 Score4
0 Jack 10 Perfect 10 Perfect
1 Jill 10 10 10 Not Finished
2 Jane 20 10 10 5
3 Tom Not Finished 15 10 5
drop_list = ["Perfect","Not Finished"]
xdf[~xdf["Score1"].isin(drop_list)]
Out[48]:
Name Score1 Score2 Score3 Score4
0 Jack 10 Perfect 10 Perfect
1 Jill 10 10 10 Not Finished
2 Jane 20 10 10 5
如果我只想从1列中删除,但我想在多列中删除(Score1,Score2,Score3,Score4),则上述方法效果很好
以下似乎也不起作用:
xdf[~xdf[["Score1","Score2","Score3","Score4"]].isin(drop_list)]
Out[49]:
Name Score1 Score2 Score3 Score4
0 NaN 10 NaN 10 NaN
1 NaN 10 10 10 NaN
2 NaN 20 10 10 5
3 NaN NaN 15 10 5
有什么想法吗?谢谢
答案 0 :(得分:1)
使用DataFrame.any
进行测试,每行最多True
:
drop_list = ["Perfect","Not Finished"]
df = xdf[~xdf[["Score1","Score2","Score3","Score4"]].isin(drop_list).any(axis=1)]
print (df)
Name Score1 Score2 Score3 Score4
2 Jane 20 10 10 5
print (xdf[["Score1","Score2","Score3","Score4"]].isin(drop_list))
Score1 Score2 Score3 Score4
0 False True False True
1 False False False True
2 False False False False
3 True False False False
print (xdf[["Score1","Score2","Score3","Score4"]].isin(drop_list).any())
Score1 True
Score2 True
Score3 False
Score4 True
dtype: bool
print (~xdf[["Score1","Score2","Score3","Score4"]].isin(drop_list).any())
Score1 False
Score2 False
Score3 True
Score4 False
dtype: bool