import pandas as pd
df = pd.DataFrame(data=[5,6,7,8], index=[1,2,3,4], columns=['D',])
blacklist = [2,3]
#your current way ...
ix=[i for i in df.index if i not in blacklist]
df_select=df.loc[ix]
# use a mask
mask = [True if x else False for x in df.index if x not in blacklist]
df.loc[mask]
对索引使用^{} ,并反转布尔索引以执行标签选择:
http://pandas.pydata.org/pandas-docs/dev/indexing.html#indexing-label 实际上,loc和iloc都采用布尔数组,在本例中是
mask
。从现在起,你可以重复使用这个面具,应该更有效。可以使用^{} 在原始索引和要删除的索引之间创建差异:
它的优点是省钱,而且比列表理解更容易阅读。
相关问题 更多 >
编程相关推荐