我有一个pandas数据帧,df.
我想选择在所有指数df是不是在列表中,blacklist.
现在,我使用list comprehension创建所需的标签以进行切片.
ix=[i for i in df.index if i not in blacklist]
df_select=df.loc[ix]
Run Code Online (Sandbox Code Playgroud)
工作正常,但如果我需要经常这样做可能会很笨拙.
有一个更好的方法吗?
EdC*_*ica 55
isin在索引上使用并反转布尔索引以执行标签选择:
In [239]:
df = pd.DataFrame({'a':np.random.randn(5)})
df
Out[239]:
a
0 -0.548275
1 -0.411741
2 -1.187369
3 1.028967
4 -2.755030
In [240]:
t = [2,4]
df.loc[~df.index.isin(t)]
Out[240]:
a
0 -0.548275
1 -0.411741
3 1.028967
Run Code Online (Sandbox Code Playgroud)
ASG*_*SGM 12
您可以使用set()创建原始索引与要删除的索引之间的差异:
df.loc[set(df.index) - set(blacklist)]
Run Code Online (Sandbox Code Playgroud)
它具有简约的优点,并且比列表理解更容易阅读.
小智 6
df = pd.DataFrame(data=[5,6,7,8], index=[1,2,3,4], columns=['D',])
blacklist = [2,3]
df.drop(blacklist,0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33985 次 |
| 最近记录: |