【问题标题】:Is there a way to iterate through a column in pandas if it is an index如果它是索引,有没有办法遍历熊猫中的列
【发布时间】:2021-06-10 12:35:23
【问题描述】:

我有一个看起来像这样的 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])

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

【问题讨论】:

  • 先试试reset_index()
  • 你想到了什么输出?

标签: python pandas dataframe numpy data-analysis


【解决方案1】:

您可以使用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()

【讨论】:

  • 知道了,从来不知道 '.get_level_values()' 方法,如果用户没有输入任何一个 Sub,你如何将上述代码块转换为 'try' 'except' 块地区。
  • if/else 块不满足您的需求吗?你想捕捉什么异常?
  • 我正在尝试引发“ValueError”以打印“您必须输入有效的子区域”
猜你喜欢
  • 2017-04-28
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 2019-06-29
  • 2021-04-05
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
相关资源
最近更新 更多