Python Pandas:获取与列值匹配的所有行的索引

Python Pandas: Getting the Index of All Rows that Match a Column Value

本问题已经有最佳答案,请猛点这里访问。

我有以下数据框:

1
2
3
4
5
6
7
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数据框的适当语法,以确定如何为列"channel"等于a或b的所有实例编制索引。找到所有实例后,我将打印出这些实例。此外,我希望能够调用每个索引,以获得脚本中的进一步应用程序。

我希望显示器是:

1
2
3
4
Rec  Channel  Value1  Value2
Event   A       23      39
Post    A       79      11
Post    B       88      69

然后,我希望有一个"for循环",它分别地遍历并打印出每个索引实例,这样就很容易单独地识别和调用它们,以便在脚本中进一步使用。有人能提出建议吗?


您可以使用pd.Series.isin进行以下操作:

1
2
3
4
5
6
7
8
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

按索引返回第二行:

1
2
3
4
5
6
7
8
9
res2 = res.loc[2]

print(res2)

# Rec        Event
# Channel        A
# Value1        23
# Value2        39
# Name: 2, dtype: object


使用query

1
2
3
4
5
6
7
8
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

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

要么

1
idx = res.index

或者,不制作EDOCX1[2]

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