Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:获取与列值匹配的所有行的索引_Python_Pandas_Dataframe_Indexing - Fatal编程技术网

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

Python:获取与列值匹配的所有行的索引,python,pandas,dataframe,indexing,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 我正在尝试确定此数据帧的适当语法,以确定如何为列“Channel”等于A或B的所有实例编制索引。

我有以下数据框:

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
我正在尝试确定此数据帧的适当语法,以确定如何为列“Channel”等于A或B的所有实例编制索引。一旦找到所有实例,我将打印这些实例。此外,我希望能够调用每个索引,以便在脚本中进一步应用

我希望显示器是:

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

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

您可以使用
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
使用
查询

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循环”中,以便每次在通道列中找到a或B时,循环都会单独打印每个实例(如果有意义的话)?你能提出建议吗?@Bigbellerbrand,这是另一个问题。你可以试试:这很有效,非常感谢!我唯一感兴趣的是,我需要将按索引返回的行放在“for循环”中,以便每次在通道列中找到a或B时,循环都会单独打印每个实例(如果有意义的话)?你能告诉我吗?我已经更新了我的帖子