使用for循环获取Pandas系列索引级别

时间:2019-12-10 03:59:02

标签: python-3.x pandas

我有以下具有2个级别的熊猫系列(如第一个图像所示)。我想使用一个for循环来打印每个条目的第一级(.index.levels [0])。即我正在寻找的输出应该是(1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,....)。由于第一个月有9个条目,其次是2个,第二个也应该有9个条目,第三个月则有3个条目,依此类推。

我在下面编写了以下代码,但没有得到(1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2 .. ..),最后得到“ int64Index([1,2,3,4,5,6,.....],dtypes ='int64',name ='month'):如第二张图片。关于如何获得每个条目月份的想法?

for i in df_postMonMean:
    print(df_postMonMean[df_postMonMean == i].index.levels[0])

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

希望这会有所帮助:

df = pd.DataFrame([['1', '2011', 1],
                   ['1', '2012', 2],
                   ['1', '2013', 3],
                   ['2', '2011', 1],
                   ['2', '2012', 4],
                   ['2', '2013', 5],
                   ['3', '2011', 5],
                   ['3', '2012', 5],],
                  columns=['month','year','value']).set_index(['month','year'])

print(df)

print(df.index.get_level_values(0))

输出:

            value
month year       
1     2011      1
      2012      2
      2013      3
2     2011      1
      2012      4
      2013      5
3     2011      5
      2012      5
Index(['1', '1', '1', '2', '2', '2', '3', '3'], dtype='object', name='month')

您也可以使用df.index.get_level_values('month')