我有一个值列表(在 Python 列表中事先不知道),我的 Panda DataFrame 中的一列不得包含所有行。
网络上的所有食谱(例如this one https://stackoverflow.com/questions/18172851/deleting-dataframe-row-in-pandas-based-on-column-value)展示如何仅使用一个要排除的值来执行此操作,但我有多个要排除的值。我该怎么做?
请注意,我无法对要在代码中排除的值进行硬编码。
Thanks!
你可以做负数isin() http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-with-isin索引:
In [57]: df
Out[57]:
a b c
0 1 2 2
1 1 7 0
2 3 7 1
3 3 2 7
4 1 3 1
5 3 4 2
6 0 7 1
7 5 4 3
8 6 1 0
9 3 2 0
In [58]: my_list = [1, 7, 8]
In [59]: df.loc[~df.b.isin(my_list)]
Out[59]:
a b c
0 1 2 2
3 3 2 7
4 1 3 1
5 3 4 2
7 5 4 3
9 3 2 0
或使用query() http://pandas.pydata.org/pandas-docs/stable/indexing.html#the-in-and-not-in-operators功能:
In [60]: df.query('@my_list not in b')
Out[60]:
a b c
0 1 2 2
3 3 2 7
4 1 3 1
5 3 4 2
7 5 4 3
9 3 2 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)