https://github.com/AngularianUK/parknow-pig-latin/blob/master/src/index.html
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
也为B提供第二行?唯一的区别是括号
a.loc[['1/1/2000','A'],]
答案 0 :(得分:0)
将“ 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')
当指定为列表时,熊猫将仅尝试在第一级建立索引。在第一级中显示“ 1/1/2000”,并返回与之关联的所有记录。
当指定为元组时,它将假定所有级别的元组值,而当找不到它时,将引发KeyError。找到后,仅返回该行。