python - 通过指定多索引从原始数据帧中提取子数据帧
问题描述
首先,我制作了一个具有两个索引的以下数据框,file_id
因此obj_id
左侧的两个数据不是列。
file_id obj_id val_1 val_2 ...
'file_1' 0 111 222
2 111 222
4 413 1231
'file_2' 5 111 222
27 111 222
3 413 1231
9 413 1231
'file_3' 0 111 222
2 111 222
4 413 1231
...
我想提取指定的多行file_id
并创建一个保持原始结构的新数据框。例如,如果我有一个 list ['file_1', 'file_3']
,则所需的输出是
file_id obj_id val_1 val_2 ...
'file_1' 0 111 222
2 111 222
4 413 1231
'file_3' 0 111 222
2 111 222
4 413 1231
我首先尝试删除所有不必要的行,但它需要指定第二个索引obj_id
,所以
df.drop(['file_2', 'file_4', 'file_5' ...]) # Throw exception
df.drop(('file_2', 5)) # Works but leave other rows in file_2, I need to drop all row in file_2
file_id obj_id val_1 val_2 ...
'file_2' 27 111 222
3 413 1231
9 413 1231
...
obj_id
取决于每个file_id
,除非有通配符之类的东西,否则这种丢弃方法不起作用。删除也需要很多步骤,我希望我可以简单地按列表提取行file_id
。有什么解决办法吗?
解决方案
只需将我的评论发布为答案,以便 OP 将其标记为已回答:
由于文件是MultiIndex you should just need to use
.loc` 的最外层:
df.loc[["file_1", "file_2"], :]
推荐阅读
- javascript - 如何删除一个json元素?
- c# - .Net 应用程序的 Cpu 中的线程使用情况
- php - 无法将移动设备连接到本地 MySQL 数据库,但可以使用模拟器
- c - 联合数据存储的工作原理。得到令人困惑的输出
- javascript - React Native:具有动态内容的单一视图
- node.js - TypeORM + Webpack 导致 SyntaxError: Unexpected token for entity file
- r - 在ggplot中标记特定点
- azure - 在 PhoneFactor-InputOrVerify Technical Profile(B2C 自定义用户流程)中,是否可以允许用户更改其默认手机号码?
- python - 如何通过 Python 中的 URL 下载 Azure Blob 存储文件?
- python - 用django连接mysql数据库