簡體   English   中英

熊貓按多列分組並根據多個條件刪除行

[英]pandas group by multiple columns and remove rows based on multiple conditions

我有一個數據框,如下所示:

imagename,locationName,brandname,x,y,w,h,xdiff,ydiff
95-20180407-215120-235505-00050.jpg,Shirt,SAMSUNG,0,490,177,82,0,0
95-20180407-215120-235505-00050.jpg,Shirt,SAMSUNG,1,491,182,78,1,1
95-20180407-215120-235505-00050.jpg,Shirt,DHFL,3,450,94,45,2,-41
95-20180407-215120-235505-00050.jpg,Shirt,DHFL,5,451,95,48,2,1
95-20180407-215120-235505-00050.jpg,DUGOUT,VIVO,167,319,36,38,162,-132
95-20180407-215120-235505-00050.jpg,Shirt,DHFL,446,349,99,90,279,30
95-20180407-215120-235505-00050.jpg,Shirt,DHFL,455,342,84,93,9,-7
95-20180407-215120-235505-00050.jpg,Shirt,GOIBIBO,559,212,70,106,104,-130

它是一個 csv 轉儲。 由此我想按圖像名稱和品牌名稱進行分組。 只要 xdiff 和 ydiff 中的值小於 10,就刪除第二行。

例如,從前兩行我想刪除第二行,類似地從第 3 行和第 4 行我想刪除第 4 行。

我可以在 R 中使用 dplyr group by、lag 和 lead 函數快速完成此操作。 但是,我不確定如何在 python 中組合不同的函數來實現這一點。 這是我迄今為止嘗試過的:

df[df.groupby(['imagename','brandname']).xdiff.transform() <= 10]

不確定我應該在轉換中調用什么函數以及如何包含ydiff

預期輸出如下:

imagename,locationName,brandname,x,y,w,h,xdiff,ydiff
95-20180407-215120-235505-00050.jpg,Shirt,SAMSUNG,0,490,177,82,0,0
95-20180407-215120-235505-00050.jpg,Shirt,DHFL,3,450,94,45,2,-41
95-20180407-215120-235505-00050.jpg,DUGOUT,VIVO,167,319,36,38,162,-132
95-20180407-215120-235505-00050.jpg,Shirt,DHFL,446,349,99,90,279,30
95-20180407-215120-235505-00050.jpg,Shirt,GOIBIBO,559,212,70,106,104,-130

您可以采用單獨的 groupby 幀並通過apply函數應用條件

#df.groupby(['imagename','brandname'],group_keys=False).apply(lambda x: x.iloc[range(0,len(x),2)] if x['xdiff'].lt(10).any() else x)
df.groupby(['imagename','brandname'],group_keys=False).apply(lambda x: x.iloc[range(0,len(x),2)] if (x['xdiff'].lt(10).any() and x['ydiff'].lt(10).any()) else x)

出去:

    imagename   locationName    brandname   x   y   w   h   xdiff   ydiff
2   95-20180407-215120-235505-00050.jpg Shirt   DHFL    3   450 94  45  2   -41
5   95-20180407-215120-235505-00050.jpg Shirt   DHFL    446 349 99  90  279 30
7   95-20180407-215120-235505-00050.jpg Shirt   GOIBIBO 559 212 70  106 104 -130
0   95-20180407-215120-235505-00050.jpg Shirt   SAMSUNG 0   490 177 82  0   0
4   95-20180407-215120-235505-00050.jpg DUGOUT  VIVO    167 319 36  38  162 -132

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM