我想知道为什么存在按密钥访问多级索引系列行的功能,但数据帧不存在。
例如,我有以下数据框:
index_1 index_2 num_1 num_2
0 a c 1 2
1 a c 4 3
2 a c 3 4
3 a d 2 3
4 b d 3 1
5 b d 2 3
我现在按如下方式执行groupby操作:
group_single_col = test.groupby(['index_1', 'index_2'])['num_1'].max()
我没有问题:
group_single_col[('a')]
或
group_single_col[('a', 'c')]
这是一个了不起的功能,允许我根据不同索引级别的值进行切片。
但是,如果我执行groupby并提取多个列,如下所示:
group_double_col = test.groupby(['index_1', 'index_2'])[['num_1', 'num_2]].max()
返回的对象是DataFrame,虽然实现了多级索引,但操作如下:
group_double_col[('a')]
失败。
据我所知,在第一种情况下返回一个系列,在第二种情况下返回一个数据帧,但我仍然认为该功能应该可以正常使用数据帧。
后续问题是,在数据框的情况下有哪些解决方法?
目前我这样做:
grouped[(grouped.index.get_level_values('index_1')=='a')]
但我怀疑是否有更有效的方法。
答案 0 :(得分:4)
您可以使用xs
:
switch (indexPath.row) {
case 0:
let cell = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! PrefCell1TableViewCell
return cell
case 1:
let cell = tableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath) as! PrefCell1TableViewCell
return cell
case 2:
let cell = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! PrefCell1TableViewCell
return cell
default:
let cell = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! PrefCell1TableViewCell
return cell
}