【问题标题】:Python Pandas: Getting the Index of All Rows that Match a Column Value [duplicate]Python Pandas:获取与列值匹配的所有行的索引 [重复]
【发布时间】:2018-10-01 05:16:14
【问题描述】:

我在下面有以下数据框:

Rec  Channel  Value1  Value2 
Pre             10      20
Pre             35      42
Event    A      23      39
FF              50      75
Post     A      79      11
Post     B      88      69

我正在尝试确定此 Pandas Dataframe 的适当语法,以了解如何为“Channel”列等于 A 或 B 的所有实例编制索引。找到所有实例后,我想将它们打印出来.此外,我希望能够调用每个索引以在脚本中进一步应用。

我希望显示为:

Rec  Channel  Value1  Value2
Event   A       23      39
Post    A       79      11
Post    B       88      69

然后我想要一个“for 循环”,它通过并分别打印出每个索引实例,以便轻松识别和单独调用它们以在脚本中进一步使用。有人可以请教吗?

【问题讨论】:

    标签: python pandas dataframe indexing


    【解决方案1】:

    使用query

    res = df.query('Channel in ["A", "B"]')
    
    res
    
         Rec Channel  Value1  Value2
    2  Event       A      23      39
    4   Post       A      79      11
    5   Post       B      88      69
    

    如果您想要索引以便可以将其用于其他目的:

    要么

    idx = res.index
    

    或者,不用res

    idx = df.index[df.Channel.isin(['A', 'B'])]
    

    【讨论】:

    • 成功了,非常感谢!我唯一好奇的是,我将需要按索引返回的行处于“for循环”中,以便每次在 Channel 列中找到 A 或 B 时,循环将如果有意义的话,分别打印出每个实例?可以请教吗?
    • 我已经更新了我的帖子
    【解决方案2】:

    您可以为此使用pd.Series.isin

    res = df[df['Channel'].isin({'A', 'B'})]
    
    print(res)
    
    #      Rec Channel  Value1  Value2
    # 2  Event       A      23    39.0
    # 4   Post       A      79    11.0
    # 5   Post       B      88    69.0
    

    按索引返回第二行:

    res2 = res.loc[2]
    
    print(res2)
    
    # Rec        Event
    # Channel        A
    # Value1        23
    # Value2        39
    # Name: 2, dtype: object
    

    【讨论】:

    • 成功了,非常感谢!我唯一好奇的是,我将需要按索引返回的行处于“for循环”中,以便每次在 Channel 列中找到 A 或 B 时,循环将如果有意义的话,分别打印出每个实例?可以请教吗?
    • @bigballerbrand,这是另一个问题。你可以试试:How to iterate over rows in a DataFrame in Pandas?
    猜你喜欢
    • 2014-03-15
    • 2016-12-07
    • 1970-01-01
    • 2020-09-09
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2014-03-07
    相关资源
    最近更新 更多