【问题标题】:Pandas get the row ID based on conditionPandas 根据条件获取行 ID
【发布时间】:2020-02-16 15:35:29
【问题描述】:

我有以下数据框:

Date          best    a    b    c    d
1990-01-01    a       5    4    7    2
1991-01-02    c       10   1    2    0
1992-01-03    d       2    1    4    12
1993-01-04    a       5    8    11   6

我希望得到df['Date' == '1992-01-03']所在的行ID。

预期回报是2

有什么想法吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    为此,您需要访问DataFrame 的索引并获取其ID。按照https://stackoverflow.com/a/21800319/3921457 的解释并假设您的对象名为df,您可以执行以下操作:

    ids = df.index[df['Date'] == '1992-01-03'].tolist()
    print(ids)
    # [2]
    

    如果Date 已经是DataFrame 的索引,您可以更改为数字索引,只需键入:df = df.reset_index()

    【讨论】:

    • 感谢您的友好建议。是否可以返回整数数据类型的值?
    • 为此,您可以简单地访问列表的第一个元素,即ids[0](或使用stackoverflow.com/q/24273130/3921457 中描述的`.iloc[0]),但您应该考虑“未找到”案子。无论如何,有可能获得不止一个巧合,所以您可能需要实现某种逻辑来选择其中一个。
    【解决方案2】:

    你也可以使用np.where:

    np.where(df.Date=='1992-01-03')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 2021-10-23
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      相关资源
      最近更新 更多