如果 pandas 中的列是索引,有没有办法遍历该列

Is there a way to iterate through a column in pandas if it is an index

我有一个 pandas DataFrame 看起来像这样

Region    Sub Region          Country     Size      Plants  Birds   Mammals
Africa    Northern Africa     Algeria     2380000   22      41      15
                              Egypt       1000000   8       58      14
                              Libya       1760000   7       32      8
          Sub-Saharan Africa  Angola      1250000   34      53      32
                              Benin       115000    20      40      12
          Western Africa      Cape Verde  4030      51      35      7
Americas  Latin America       Antigua     440       4       31      3
                              Argentina   2780000   70      42      52
                              Bolivia     1100000   106     8       55
          Northern America    Canada      9980000   18      44      24
                              Grenada     340       3       29      2
                              USA         9830000   510     251     91
Asia      Central Asia        Kazakhstan  2720000   14      14      27
                              Kyrgyz      200000    13      3       15
                              Uzbekistan  447000    16      7       19
          Eastern Asia        China       9560000   593     136     96
                              Japan       378000    50      77      49
                              South Korea 100000    31      28      33

所以我试图提示用户输入一个值,如果输入存在于子区域列中,则执行特定任务。

我尝试将 'Sub region' 列转换为列表并在它与用户输入匹配时对其进行迭代

    sub_region_list=[]
    for i in world_data.index.values:
        sub_region_list.append(i[1])
        print(sub_region_list[0])

这不是我想要的输出。 我相信有一种更简单的方法可以做到这一点,但似乎无法弄清楚

您可以使用get_level_values进行筛选。

sub_region = input("Enter a sub region:")
if sub_region not in df.index.get_level_values('Sub Region'):
    raise ValueError("You must enter a valid sub-region")

如果要将列值保存在列表中,请尝试:

df.index.get_level_values("Sub Region").unique().to_list()