在迭代 shop_id
时,我试图在多索引 DataFrame 中获取 shop_id
值:
total_sales
shop_id date_block_num
0 0 3.034985e+09
1 3.547803e+09
所以我尝试了:
for i, shop_sales in monthly_change.groupby(level=0):
print(shop_sales['shop_id'])
但它返回了一个关键错误。
我也试过 shop_sales.index
,但我不明白如何使用结果
MultiIndex([(0, 0),
(0, 1)],
names=['shop_id', 'date_block_num'])
答案 0 :(得分:0)
如果需要第一级或第二级 MultiIndex
,请使用 Index.get_level_values
:
for i, shop_sales in monthly_change.groupby(level=0):
#grouping by first level, so get scalar
print(i)
#if need first level of MultiIndex
print (monthly_change.index.get_level_values('shop_id'))
#if need second level of MultiIndex
print (monthly_change.index.get_level_values('date_block_num'))
0
Int64Index([0, 0], dtype='int64', name='shop_id')
Int64Index([0, 1], dtype='int64', name='date_block_num')
答案 1 :(得分:0)
不,它不起作用,因为您尝试获取列shop_id,但是在groupby 之后,它已成为索引,因此不会引发错误:
for i, shop_sales in monthly_change.groupby(level=0):
print(shop_sales.reset_index()['shop_id'])
但我真的不明白你想做什么...... 这可能吗?
for shop in monthly_change.index.get_level_values(0):
print(monthly_change.loc[shop])
或者更简单的:
monthly_change.loc[0]
要得到 shop_id == 0 吗?