gpt4 book ai didi

python-3.x - 使用 pandas multiIndex 数据框进行选择

转载 作者:行者123 更新时间:2023-12-03 21:20:18 25 4
gpt4 key购买 nike

我有一个如下所示的多索引数据框:

df.head():

enter image description here

如何选择第一个索引 == "特定学校名称"的所有行和月份列 == "Jan"的所有第二个索引?

我之前没有使用过 multiIndexed 数据框,我可以像这样选择 Month == "Jan"的所有行:

df[df['Month'] == 'Jan']

但这给了我所有的学校。我一直在玩它,但无法为一所学校添加索引。那么这是如何工作的呢?

编辑: 好的,这样就可以了:df[df['Month'] == 'Mar'].loc["School Name"],但是有吗这是一种更惯用的方式还是标准方式?

最佳答案

您可以使用 query :

print (df.query('ilevel_0 == "School Name" and Month == "Jan"'))

示例:

df = pd.DataFrame({'A':['School Name','Agona','another'],
'B':[0,1,2],
'Month':['Jan', 'Jan', 'Feb']}).set_index(['A','B'])
df.index.names = [None, None]
print (df)
Month
School Name 0 Jan
Agona 1 Jan
another 2 Feb

print (df.query('ilevel_0 == "School Name" and Month == "Jan"'))
Month
School Name 0 Jan

print (df.query('ilevel_0 == "School Name" & Month == "Jan"'))
Month
School Name 0 Jan

解决方案 boolean indexing :

mask = (df.index.get_level_values(0) == 'School Name') & (df['Month'] == 'Jan')
print (df[mask])
Month
School Name 0 Jan

编辑:

使用变量@:

var = 'School Name'
print (df.query('ilevel_0 == @var & Month == "Jan"'))
Month
School Name 0 Jan

关于python-3.x - 使用 pandas multiIndex 数据框进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42875356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com