【问题标题】:get index of first match on series - pandas [duplicate]获取系列第一场比赛的索引-熊猫[重复]
【发布时间】:2021-04-09 13:56:50
【问题描述】:

我想获得系列赛第一场比赛的索引。例如:

nums = pd.Series([1, 3, 7, 12, 12, 23, 3, 1, 9, 0])

如何获得数字 12 第一次出现的索引?我需要用一个字符串来做,所以它应该是通用的。

你能帮帮我吗?

【问题讨论】:

  • 看看idxmax
  • pdnums 是什么?是清单吗?这些是数字还是字符串?
  • idx=nums.eq(12).idxmax()。您可以仔细检查它确实是 12: nums.loc[idx] == 12
  • @tansy 是 pandas 的简写,import pandas as pd
  • 好的,然后我给出了通用答案,无论如何都可以。

标签: python pandas


【解决方案1】:
import pandas as pd

ser = pd.Series([1, 3, 7, 12, 12, 23, 3, 1, 9, 0])
ser[ser==12].index[0]

【讨论】:

  • 如果系列中没有12,这将引发错误。
  • 哦。我不知道。
  • @QuangHoang 但是如果我们按照你说的那样做,ser.eq(12).idxmax() 它会返回 0,这是不合理的。至少可以在 try-except 块中处理像 IndexError 这样的错误。你怎么看?
  • 这就是为什么我说检查nums.loc[idx]==12。不过,在您的解决方案中,只需在切片前检查 nums[nums==12] 的长度即可。 try-except 确实有效,但看起来很人工:-)。
  • 是的,这似乎是正确的。我不喜欢 if 块来检查错误。所以....个人口味。 ?
【解决方案2】:
import pandas as pd

nums = pd.Series([1, 3, 7, 12, 12, 23, 3, 1, 9, 0])

search_value=12
Index_list=nums.index[nums == search_value].tolist()
print(Index_list[0])

【讨论】:

    【解决方案3】:

    假设nums 是一个列表:

    >>> nums = [1, 3, 7, 12, 12, 23, 3, 1, 9, 0]
    >>> def searchList1(query, list):
    ...     for i in range(len(list)):
    ...             if list[i] == query:
    ...                     return i
    ...     return -1
    ... 
    >>> searchList1(12, nums)
    3
    

    然后你对结果做任何事情。

    【讨论】:

      猜你喜欢
      • 2017-12-23
      • 2019-09-24
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 2016-11-18
      • 2012-03-27
      • 2019-01-26
      • 2022-11-23
      相关资源
      最近更新 更多