python - pandas 按列表查询行

标签 python list pandas

我有一个 pandas 数据框,想要从数据框中返回与出现在目标 ID 列表中的客户 ID 对应的行。

例如,如果我的数据框如下所示:

id    Name    ...    ...
-------------------------
1     Bob     ...    ...
2     Dave    ...    ...
2     Dave    ...    ...
3     Phil    ...    ...
4     Rick    ...    ...
4     Rick    ...    ...

基本上,我想返回在此数据框中多次出现的客户的行。所以我想返回所有出现多次的id。

id    Name    ...    ...
-------------------------
2     Dave    ...    ...
2     Dave    ...    ...
4     Rick    ...    ...
4     Rick    ...    ...

我可以通过执行以下操作获取 id 列表

grouped_ids = df.groupby('id').size()
id_list = grouped_ids[grouped_ids>1].index.tolist()

现在我想返回数据框并返回与列表中这些 id 对应的所有行。

这可能吗?

感谢您的帮助。

最佳答案

我猜您正在寻找isin():

In [1]: import pandas as pd

In [2]: df = pd.DataFrame({'customer_id':range(5), 'A':('a', 'b', 'c', 'd', 'e')})

In [3]: df
Out[3]: 
   A  customer_id
0  a            0
1  b            1
2  c            2
3  d            3
4  e            4

In [4]: df[df.customer_id.isin((1,3))]
Out[4]: 
   A  customer_id
1  b            1
3  d            3

[编辑]要匹配给定的目标列表,只需将其用作 isin() 方法的参数即可:

In [5]: mylist = (1,3)

In [6]: df[df.customer_id.isin(mylist)]
Out[6]: 
       A  customer_id
1  abcde            1
3  abcde            3

关于python - pandas 按列表查询行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24237211/

相关文章:

python - nltk如何给出多个分隔的句子

python - 具有多索引的 Pandas 分区 (.div)

python - pandas.DataFrame 上的成对行操作矩阵

python - 是否有必要在多线程的 Paramiko 中为每个线程打开一个 SFTPClient?

python - Python 中的回显单词

python - 在 python 中使用 cntk 训练模型

r - 列中的连续NA

r - 将两个向量组合成有序对列表

python - Paypal Sandbox 和 Google App Engine 的身份验证错误

python - 如何转换为 "end-of-month"?