如果 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()
我有一个 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()