索引多级索引数据框架

2024-09-21 01:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

mydf = pd.DataFrame({'dts':['1/1/2000','1/1/2000','1/1/2000','1/2/2000', '1/3/2000', '1/3/2000'],
                            'product':['A', 'B', 'A','A', 'A','B'],
                            'value':[1,2,2,3,6,1]})
a =mydf.groupby(['dts','product']).sum()
a
Out[1]: 
                  value
dts      product       
1/1/2000 A            3
         B            2
1/2/2000 A            3
1/3/2000 A            6
         B            1

a.loc[('1/1/2000','A'),]给出第一行

  a.loc[('1/1/2000','A'),]
    Out[2]: 
    value    3
    Name: (1/1/2000, A), dtype: int64

但是为什么a.loc[['1/1/2000','A'],]也给B第二行呢?唯一的区别是括号

a.loc[['1/1/2000','A'],]
Out[3]: 
                  value
dts      product       
1/1/2000 A            3
         B            2

Tags: namedataframevalueproductoutloc括号pd
1条回答
网友
1楼 · 发布于 2024-09-21 01:20:07

将“A”替换为完全不同的内容:

a.loc[['1/1/2000','XYZZZ'],]

                  value
dts      product       
1/1/2000 A            3
         B            2

现在,对元组重复以下步骤:

a.loc[('1/1/2000','XYZZZ'),]

这就是你得到的:

KeyError: ('1/1/2000', 'XYZZZ')

当指定为列表时,pandas将仅尝试在第一级建立索引。““1/1/2000”出现在第一级,并返回与之相关的所有记录

当指定为元组时,它将假定所有级别的元组值,当找不到元组值时,将引发KeyError。当它找到它时,只返回该行

相关问题 更多 >

    热门问题