如何在熊猫中一起使用distinct和where子句?

时间:2019-09-03 13:52:53

标签: 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]

我想检查subject_id中是否存在sub_list中的op1。如果存在,则从该主题ID的distinctlosiid列中获取area值(查找subject_id 1 { {1}} and(重复)

我尝试了以下内容,但不能有多列

4

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

我正在寻找类似的东西

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

我希望我的输出如下所示

enter image description here

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

我不确定这有多快,但是您可以尝试:

git rm -r --cached .
git add .

答案 2 :(得分:1)

rename

答案 3 :(得分:1)

这实际上是先前答案的结合

distCols = ["subject_id", "iid",
            "los", "area"]

op1[op1['subject_id'].isin(sub_list)].drop_duplicates(distCols)