python - 如何在 Pandas 中一起使用 distinct 和 where 子句?

标签 python pandas dataframe pandas-groupby

我有一个数据框和列表,如下所示

op1 = pd.DataFrame({
'subject_id':[1,1,2,3,4,4,5],
'iid': [21,22,23,24,26,26,27],
'los':[121,122,123,124,111,111,131],
'area':['a','a','b','c','d','d','f'],
'date' : ['1/1/2017','1/2/2017','1/3/2017','1/4/2017','1/6/2017','1/6/2017','1/8/2109'],
'val' :[5,10,5,16,26,26,7]
 })

sub_list = [1,2,3,4]

我想检查 sub_list 中的 subject_id 是否出现在 op1 中。如果存在,则从 losiidarea 列中获取该 subject_id 的 distinct 值(查找差异在 subject_id 1 4 之间(有重复项)

我试过下面但不能有多个列

op1[op1['subject_id'].isin(sub_list)] # how to use distinct records here?

我必须将其应用于一百万条记录。所以任何优雅高效的解决方案都是有帮助的

我正在寻找类似的东西

select distinct subject_id, iid,los, area from op1
where subject_id in [sub_list] 

我希望我的输出如下所示

enter image description here

最佳答案

如果您打算只返回选定的列,请执行以下操作:

result = op1.loc[op1["subject_id"].isin(sub_list), ["subject_id", "los", "iid", "area"]].drop_duplicates()

关于python - 如何在 Pandas 中一起使用 distinct 和 where 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57773181/

相关文章:

python - 类的任何子类的实例的类型提示

python - 制作动态字典python列表

python - 使用 Matplotlib 和 Pandas 时重命名 X 轴标签

通过匹配 ID 和列名检索 data.frame 的值

python-2.7 - 如果给定列中的值不包含在列表中,则删除 pandas 数据框行

python - 如何在 Python pyppeteer 中将 Accept-Encoding 设置为 gzip 并打印 pyppeteer header ?

python - 使用谷歌自动完成的 QtQuick 文本搜索自动完成

python - pandas.DataFrame.describe() 在 .py 脚本中没有输出

python - 如何在比较同一数据帧的两个版本后获取修改的行

python - 填充数据框中未明确说明的值