Python 在多级数据帧中选择特定的索引单元格值

Python 在多级数据帧中选择特定的索引单元格值,python,dataframe,Python,Dataframe,我有一个包含以下信息的多级数据帧: A B 123 1 value1 value2 654 2 value3 value4 C D 543 2 value1 value2 999 2 value5 value7 例如,我想使用索引值A和B(或C和D)仅选择一个值123或654或543等(索引的一部分)。 值A、B、C、D是有限的,因此可以根据循环中的列表轻松搜索。 但值123、654

我有一个包含以下信息的多级数据帧:

A  B  123  1     value1      value2
      654  2     value3      value4
C  D  543  2     value1      value2
      999  2     value5      value7
例如,我想使用索引值A和B(或C和D)仅选择一个值123或654或543等(索引的一部分)。 值A、B、C、D是有限的,因此可以根据循环中的列表轻松搜索。 但值123、654或543的范围是从0到20000,所以使用for循环来获取它会使事情变得非常缓慢

多谢各位。 提供更多详细信息: 我正在尝试使用循环访问数据帧df(由您在应答中创建)。 df是一个大数据帧

在这里输入代码

# Dataframe df1 have 2 columns with with subset of values in level0 and      #level1 of df1.
for index1 in range(len(df1)):
   for index2 in range(len(df1)):
        # x, y will fetch particular value of level0 & level1 respectively
        x = df1.loc[(index1),'level0column']
        y = df1.loc[(index2),'level1column']
        # Trying to get values for level2 values
        for level2ids in range(20000):
            for level3ids in range(2):
           total1 =  df.loc[(x,y, level2ids,level3ids), 'value_x']
           ......
要替换下面的代码行

    # Trying to get values for level2 values

    for level2ids in range(20000):
因为df是一个大数据帧,我在运行时获取level0和level1的值,所以我想在运行时也获取level2的值。对于level0和level1的特定值,获取level2的值只能得到一个值非常少的列表。
不知道这是否可能,也不知道我是否要澄清我的问题。

如果您的数据框如下所示:

df = pd.DataFrame({'level0':['A','A','C','C'],
                   'level1':['B','B','D','D'],
                   'level2':[123,654,543,999],
                   'level3':[1,2,2,2],
                   'value_x':['value1','value3','value1','value5'],
                   'value_y':['value2','value4','value2','value7']})
# set the index
df.set_index(['level{}'.format(i) for i in range(4)], inplace=True)
返回:

                                value_x value_y
level0  level1  level2  level3      
  A       B      123       1    value1  value2
                 654       2    value3  value4
  C       D      543       2    value1  value2
                 999       2    value5  value7
value_x    value1
value_y    value2
Name: (A, B, 123, 1), dtype: object
您应该能够使用以下机制:

返回:

                                value_x value_y
level0  level1  level2  level3      
  A       B      123       1    value1  value2
                 654       2    value3  value4
  C       D      543       2    value1  value2
                 999       2    value5  value7
value_x    value1
value_y    value2
Name: (A, B, 123, 1), dtype: object

如果您的数据帧如下所示:

df = pd.DataFrame({'level0':['A','A','C','C'],
                   'level1':['B','B','D','D'],
                   'level2':[123,654,543,999],
                   'level3':[1,2,2,2],
                   'value_x':['value1','value3','value1','value5'],
                   'value_y':['value2','value4','value2','value7']})
# set the index
df.set_index(['level{}'.format(i) for i in range(4)], inplace=True)
返回:

                                value_x value_y
level0  level1  level2  level3      
  A       B      123       1    value1  value2
                 654       2    value3  value4
  C       D      543       2    value1  value2
                 999       2    value5  value7
value_x    value1
value_y    value2
Name: (A, B, 123, 1), dtype: object
您应该能够使用以下机制:

返回:

                                value_x value_y
level0  level1  level2  level3      
  A       B      123       1    value1  value2
                 654       2    value3  value4
  C       D      543       2    value1  value2
                 999       2    value5  value7
value_x    value1
value_y    value2
Name: (A, B, 123, 1), dtype: object

你好,你能再澄清一下吗?例如,A、B、123和1(在第一行)都是行索引吗?您好,您能提供更多的说明吗?例如,A、B、123和1(在第一行中)都是行索引吗?