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

时间:2018-04-20 13:11:56

标签: python pandas dataframe indexing

我在下面有以下数据框:

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的适当语法,以确定如何索引列'频道'或者等于A或B.一旦找到所有实例,我想打印出来。另外,我希望能够在脚本中调用每个索引以获取更多应用程序。

我希望显示为:

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

然后我想要一个' for循环'它会分别打印并打印出每个索引实例,以便于识别并单独调用它们以便在脚本中进一步使用。有人可以建议吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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'])]