给定这里创建的数据帧di:
import pandas as pd
data = {
"Event": ['Biathlon', 'Ski Jump', 'Slalom', 'Downhill'],
"Award": ['Gold', 'Bronze', 'Gold', 'Silver'],
"Points": ['100', '10', '100', '40']
}
d = pd.DataFrame(data)
di = d.set_index(["Award","Event"])
为什么执行时没有问题
di.loc['Gold','Biathlon',:]
而这个
di.loc['Gold','Biathlon','Points']
引发错误?你知道吗
更新:2/29
在翻了一些文件之后,我觉得
di.loc['Gold','Biathlon',:]
尽管在上面的示例中似乎可以工作,但实际上根本不支持语法。在研究多索引时,我遇到了一个note describing the importance of using the sort_index()数据帧上的多索引,在用户试图使用切片的情况下。当我对上面di中的索引进行排序时,上面的语句现在抛出一个错误。这就意味着我不支持像这里那样使用三个选择参数。这将是有意义的,因为它可以被解释含糊不清。你知道吗
例如
di_isorted = di.sort_index()
di_isorted.loc['Gold','Biathlon',:] #now throws an error
这是您的数据帧,它有一个多索引:
在数据帧上使用
.loc
时,通常是行、列选择(即df.loc[row_indexer, column_indexer]
)。因此,在您的例子中,您选择了索引中带有“Gold”和“Biathlon”的行,“:”表示所有列。你知道吗请注意,如果将参数作为元组传递,则结果将作为序列返回:
尝试将
.loc
与语法(di.loc['Gold','Biathlon','Points']
)一起使用会导致错误,因为您的多索引中只有两个级别,而您正在请求三个级别。你知道吗在数据帧上使用
loc
时,单个参数将导致该索引点处的数据横截面,从而返回一个序列。你知道吗因此,使用行、列选择条件,可以在给定选择条件的数据帧中指定单个单元格。你知道吗
这相当于获取该位置的数据
at
。你知道吗有关如何使用
loc
和Indexing and Selecting Data的更多信息,请参阅文档。你知道吗相关问题 更多 >
编程相关推荐