使用Series对象从数据帧中选择行(在Python中使用Pandas)

使用Series对象从数据帧中选择行(在Python中使用Pandas),python,pandas,jupyter-notebook,Python,Pandas,Jupyter Notebook,我有一个系列对象,看起来像这样: traffic_id_1 GEO03_D4T-RWS_I_6590A_V_0460A_ID_8481 traffic_id_2 GEO03_D4T-RWS_I_6590_V_0460_ID_1149 traffic_id_3 RWS01_MONIBAS_0351hrl0325ra traffic_id_4 RWS01_MONIBAS_0351hrr0325ra traffic_id_5

我有一个系列对象,看起来像这样:

traffic_id_1    GEO03_D4T-RWS_I_6590A_V_0460A_ID_8481
traffic_id_2      GEO03_D4T-RWS_I_6590_V_0460_ID_1149
traffic_id_3              RWS01_MONIBAS_0351hrl0325ra
traffic_id_4              RWS01_MONIBAS_0351hrr0325ra
traffic_id_5              RWS01_MONIBAS_0351hrr0328ra
Name: 176, dtype: object
现在,我想使用这个Series对象从包含这些ID的数据帧(看起来像)中选择行

TL;DR 最基本的方法是什么

额外信息:

我找到了这篇文章,这种方法似乎对我很有效,但我正在学习一门课程,他们还没有教我.isin()属性。这并不意味着我不能使用它,但我想用我从课程中获得的知识来完成它


我在Jupyter笔记本电脑公司工作,已经导入了pandas、matplotlib、matplotlib.pyplot和seaborn。

我不确定这对您是否有帮助,因为您似乎想根据课程中所涵盖的内容来做这件事,而这是我们无法获得的。但是,在将相关列设置为索引后,可以使用
reindex
比较序列和数据帧

以下是一个可复制的示例:

您的数据:

traffic_id_1    GEO03_D4T-RWS_I_6590A_V_0460A_ID_8481
traffic_id_2      GEO03_D4T-RWS_I_6590_V_0460_ID_1149
traffic_id_3              RWS01_MONIBAS_0351hrl0325ra
traffic_id_4              RWS01_MONIBAS_0351hrr0325ra
traffic_id_5              RWS01_MONIBAS_0351hrr0328ra
(复制到剪贴板,然后:)

因此,数据帧是:

    a               b
0   traffic_id_1    GEO03_D4T-RWS_I_6590A_V_0460A_ID_8481
1   traffic_id_2    foo
2   traffic_id_3    RWS01_MONIBAS_0351hrl0325ra
3   traffic_id_4    bar
4   traffic_id_5    RWS01_MONIBAS_0351hrr0328ra
以及该系列:

traffic_id_1    GEO03_D4T-RWS_I_6590A_V_0460A_ID_8481
traffic_id_2      GEO03_D4T-RWS_I_6590_V_0460_ID_1149
traffic_id_3              RWS01_MONIBAS_0351hrl0325ra
traffic_id_4              RWS01_MONIBAS_0351hrr0325ra
traffic_id_5              RWS01_MONIBAS_0351hrr0328ra
dtype: object

# set index as relevant col
df = df.set_index('b')

df.reindex(ser).dropna()
输出:

                                        a
GEO03_D4T-RWS_I_6590A_V_0460A_ID_8481   traffic_id_1
RWS01_MONIBAS_0351hrl0325ra             traffic_id_3
RWS01_MONIBAS_0351hrr0328ra             traffic_id_5
编辑:您也可以通过布尔过滤器实现这一点。省略在数据帧中设置索引的步骤:

mask = df.b == ser.reset_index(drop=True)
df[mask]

结果是一样的。(或在一行中:
df[df.b==ser.reset\u index(drop=True)]
)。请注意,有必要删除该系列的唯一索引,以便它与数据帧的索引保持一致。

我不确定这是否对您有帮助,因为您似乎希望根据您在本课程中介绍的内容执行此操作,这是我们无法访问的。但是,在将相关列设置为索引后,可以使用
reindex
比较序列和数据帧

以下是一个可复制的示例:

您的数据:

traffic_id_1    GEO03_D4T-RWS_I_6590A_V_0460A_ID_8481
traffic_id_2      GEO03_D4T-RWS_I_6590_V_0460_ID_1149
traffic_id_3              RWS01_MONIBAS_0351hrl0325ra
traffic_id_4              RWS01_MONIBAS_0351hrr0325ra
traffic_id_5              RWS01_MONIBAS_0351hrr0328ra
(复制到剪贴板,然后:)

因此,数据帧是:

    a               b
0   traffic_id_1    GEO03_D4T-RWS_I_6590A_V_0460A_ID_8481
1   traffic_id_2    foo
2   traffic_id_3    RWS01_MONIBAS_0351hrl0325ra
3   traffic_id_4    bar
4   traffic_id_5    RWS01_MONIBAS_0351hrr0328ra
以及该系列:

traffic_id_1    GEO03_D4T-RWS_I_6590A_V_0460A_ID_8481
traffic_id_2      GEO03_D4T-RWS_I_6590_V_0460_ID_1149
traffic_id_3              RWS01_MONIBAS_0351hrl0325ra
traffic_id_4              RWS01_MONIBAS_0351hrr0325ra
traffic_id_5              RWS01_MONIBAS_0351hrr0328ra
dtype: object

# set index as relevant col
df = df.set_index('b')

df.reindex(ser).dropna()
输出:

                                        a
GEO03_D4T-RWS_I_6590A_V_0460A_ID_8481   traffic_id_1
RWS01_MONIBAS_0351hrl0325ra             traffic_id_3
RWS01_MONIBAS_0351hrr0328ra             traffic_id_5
编辑:您也可以通过布尔过滤器实现这一点。省略在数据帧中设置索引的步骤:

mask = df.b == ser.reset_index(drop=True)
df[mask]

结果是一样的。(或在一行中:
df[df.b==ser.reset\u index(drop=True)]
)。请注意,有必要去掉该系列的唯一索引,以便它与dataframe的索引保持一致。

谢谢!这不是我学到的东西,但知道另一种方法仍然很有用:)但是你认为有没有一种方法可以创建某种布尔掩码?因为这是我学到的。谢谢!这不是我学到的东西,但知道另一种方法仍然很有用:)但是你认为有没有一种方法可以创建某种布尔掩码?因为这是我学到的东西。